[ホーム] -> [SSI 実験室]

SSI の落とし穴

注意点

SSI には、常にパフォーマンスと、セキュリティの問題がついて回ります。この二つには、どれが良いとか悪いとかの決まりが無く、大変難しい問題です。

負荷について

SSI がサーバにとって負荷になっている場合と、全く負荷にならない場合があります。サーバの稼働状況、トラフィックスをよく調べて下さい。SSI を使う価値と、サーバの負荷を天秤に掛け、適切に使用してましょう。

あまりにも負荷がかかるようならば、代替方法を検討する必要があるかも知れません。ヘッダと、フッタを付けるために、include コマンドを使っているのならば、cpp(C言語用プリプロセッサ)や、m4(UNIX系のシステムで使用できるマクロプリプロセッサ)などを使用するのも良いかも知れません。また、それ以外でも flastmod コマンドなども、sedawk 、あるいは Perl などのプログラムを用いて、事前に整形しておけるでしょう。アクセスヒットカウンターにも SSI がよく使われますが、リアルタイムで表示したいので無ければ、アクセスログよりカウントすることも出来ます。

他人に未知のバグを悟らせない

自分が作ったプログラムが悪用されたくない場合は、ファイルのパーミッションをよく考える必要があります。SSI で呼ばれるプログラムなどは、無条件に chmod 777 にする方がいますが、これは必ずしも必要ではありません。大抵の WWW サーバは、nobody グループの nobody ユーザとして実行されます。そして、自分のアカウントは大抵 users グループに属しています。従って、chmod 705 でも大抵は問題ないはずです。もし、777 に設定しておくと、他のユーザが変更できてしまいます。また、通常の ftp でファイルを送信した場合、デフォルトのパーミッションは、664 の場合があります。これもまた、他のユーザがファイルを変更できてしまいます。プログラムのパーミッションを 755 ではなく 705 にする必要があるのは、「SSI で呼ばれるプログラムは、他人にソースを見せるべきでは無い」という考えからです。思いもよらない方法で、自分が気づかなかったバグを、他人に悪用されるかも知れません。

キャッシュが無効になる

SSI を使ったページは、多くのクライアントや、プロキシサーバに搭載されているキャッシュ機能を無効にさせます。何故かというと、SSI を使ったページは常に何らかの変更があると WWW サーバが判断し、クライアントからのリクエストに対し、毎回ページを整形して送信してしまうのです。それによって、毎回同じ内容が送信されるとしても、サーバはクライアントに誠実に同じデータを送信します。これは、帯域幅を減らすことや、素早く表示させるという本来のキャッシュの機能を無効にしてしまいます。データをリクエストごとに変更する必要が無いのであれば、SSI ではなく他の方法を使用することを検討しましょう。

ホームへ