はじめに
業務中SSIを使用しているページを見かけた。
SSIについてその際に初めて知ったので、かんたんにまとめる。
※間違えている可能性があるため、必ず他の情報も参考にしてください
SSIとは?
SSIとは、Server Side Includeの略で、Webサーバーの機能の1つ。
HTML内にWebサーバー側で実行するコマンドを記載することで、サーバー側で実行しその結果を返す仕組み。サーバー側で実行して、その結果を返しているためクライアント側では通常のHTMLとして見える。
SSIは以下のように、HTML内で記述する。
<!--#コマンド名 属性名="値"-->
ただ、SSIはどのサーバーでも使えるわけではなく、SSIをサポートしていて、SSIを許可する設定をする必要がある。HTMLのコメントの記法であることから、サポートしていない場合はそのままコメントとしてブラウザ側では無視される。
メリット
・共通ファイルの分離
多くのサイトが、ヘッダーやフッターなど他のページと共通している部分がある。
それを各ページでそれぞれ実装すると、もし修正が必要になった場合すべてのヘッダーやフッターを修正しなければいけなくなってしまう。
そこで、共通して使用する箇所に関しては、別ファイルで用意しておき各ページでそのファイルを呼び出して使用することでメンテナンス性の向上(修正したい場合は、そのファイルを修正するだけで良い。)を図ることができる。
ちなみにファイル読みこみのコマンドは「file」と「virtual」がある。
<!--#include file="~" -->
<!--#include virtual="~" -->
違いとしては、
・
カレントディレクトリからの相対パスでパスを指定する必要がある。絶対パスは使用できず、相対パスを用いて上の階層を指定することができない。
・
ルートディレクトリから始まる任意のパス(絶対パス)で指定する。
こういった違いがあり、fileだと絶対パスが使用できずかつ上の階層を指定できないこともあり、基本的にvirtualを使用するという認識で良い。
・動的な情報の出力
HTMLのみでは静的な情報しか表示できないが、SSIを使用することで「サイトの更新時間」や「アクセスカウンター」「ファイルの更新日」など動的なコンテンツ表示することができる。
デメリット
SSIは、使用できるWebサーバーでかつ設定さえしていればHTML内のどこでも記述することができる。
そのため、サーバー側ではどこにSSIコマンドが記述されているかHTMLファイルを解析する必要がある。
SSIコマンドが少しであれば、それほど負荷はかからないがあまりにも多いと負荷が大きくなってしまい処理時間がかかってしまう。こういったデメリットを踏まえて、使用する必要がある。
拡張子
SSIコマンドを含んだHTMLの拡張子は一般的には***「.shtml」とする。
ただ、.htaccessで設定することで「.html」***のままSSIを使用することができる。
おわり
今回はSSIについてざっくりとまとめた。
SSIについて知らなかったため、「この拡張子が.htmlだから静的なページだ」と思っていたら実はSSIを使用していて動的にページを生成していたなんてことがありました。
以上。
参考