|
SSI
SSI は、偉大(な産物)です!
SSI の主要な実装は、リクレストされたスクリプトに
別のファイルを挿入することです。
Apache::ASP では、 2 つの方法で実現されています。
一番重要なのは、次の形式です。
<!--#include file=filename.inc-->
.inc 拡張子は、単なる慣習で、インクルードされたファイルの、
テキストは、実行されるスクリプトに直接挿入され、
スクリプトは全体としてコンパイルされます。スクリプト、ないし、
インクルードファイルが変更されると、再コンパイルされます。
インクルードは、ちょうど良い長さで、コードを分解したり、
ASP スクリプトのコード共有を促すようにしますが、
ほとんど静的(スタティック)なのに留まっています。
Version .09 で、global.asa 名前空間にコンパイルされる時、
サブルーチンとして、動的(ダイナミック)にインクルードになりました。
動的なインクルードの最初の方法は、
<!--#include file=filename.inc args=@args-->
です。
@args が明記されると、Apache::ASP スクリプトでのコンパイルされた
コードへの直接の挿入ではなく、ランタイムにインクルードするようになります。
(すなわち)サブルーチンとして、ランタイムにスクリプトをコンパイルするように作用し、
後の呼び出しに(備えて)、キャッシュされます。
このようにして、コンパイルされたサブルーチンは、引数として、
@args を持つようになります。
@args は、ASP スクリプトには、直接コードとして記述されるので、
多分に静的に留まっていますが、最終的には、この API 拡張を利用し、
ランタイム時には、インクルードとして稼働します。
$Response->Include("filename.inc", @args);
上記は、動的なインクルードの直接の変換例です。
インラインインクルードでは、若干速くはなりますが、
ランタイムでの動的インクルードは、スクリプト間で
互いのスクリプトを最小サイズに押えるなど、
httpd でのメモリ節約に大きな役割があります。
WWW ページのヘッダで、(インクルードにより)多くの
出力書式化が行われると、著明に改善します。
デフォールトでは、引数パラメタでコールされなければ、
全て、インクルードは、インライン(処理)されます。
しかし、インクルードが、サブルーチンとして、動的にランタイム時に
実行させたいなら、DynamicIncludes 設定オプションを、
上記のように変更してください。
これで、全てではありません。SSI は、フル実装されています。
上記の未記述の項目の一つは、
<!--#include virtual=filename.cgi-->
タグです。これ以外にも、Apache::Filter と、フィルタ設定オプションを通じて、
Apache::ASP 出力をフィルタリングすることにより、
たくさんの、SSI コード拡張を得ることができます。
Apache::ASP と、Apache::SSI 双方を繋ぐやりかたの詳細情報は、
上記の、フィルタ設定オプションを見てください。また、提供機能の
詳細情報は、Apache::SSI を参照してください。
|
|