HTTP/1.1 ではデータを gzip
で圧縮して送信することで転送量を減らすことができます。一般に Apache Web サーバでは mod_deflate モジュール を導入してこれを実現することが多いのですが、レンタルサーバなどでは mod_deflate が導入されていないことが多々あります。それでもコンテンツネゴシエーションに対応した Web サーバであれば、gzip で圧縮されたファイル(*.gz)を予め用意しておくことで、この恩恵に与ることがことが期待できます。
そこで、MovableType で生成したコンテンツを gzip 圧縮するためのプラグインを作ってみました。
CompressGZip
が表示されていることを確認します
静的なコンテンツを生成するようなテンプレートに使用できます。PHP(*.php) や SSI(*.shtml) を生成するような場合には使用できません。
例えば、既存のインデックスページ(index.html)を圧縮するような場合、テンプレート全体を <MTCompressGZip>
コンテナタグで囲んだ上で、出力ファイル名を index.html.gz とします。
<MTCompressGZip> : (ここに元のテンプレート) : </MTCompressGZip>
<MTCompressGZip>
コンテナタグの前後には余計な空白や改行があってはいけません。
ここで、gzip 圧縮されたファイルの転送に対応している Web ブラウザなどでindex.html にアクセスすると、Web サーバのコンテンツネゴシエーションによって、 index.html.gz が使われることになります。
注意する点として、このプラグインは、MovableType で gzip 圧縮されたファイル(*.gz)を生成するだけで、Web サーバが送出する段階で都度データを圧縮するものではありません。そのため、常に同じ内容を返す静的なコンテンツにのみ適用することができ、PHP などの動的ページを index.php.gz などと生成しても、Web サーバは *.php.gz を処理できずにエラーを返します。
当サイトでは、CSS と RSS1.0 について、このプラグインによる圧縮を施しており、概ね CSS は 20〜30%、RSS1.0 は 30% 程度のファイルサイズに圧縮されています。殆どのページが PHP による動的生成に頼っているサイトでは効果の程は薄いかもしれません。
master
) ... バグ修正や機能追加など開発途中のバージョンです。開発中の新機能などをいち早く利用できますが、新しいバグが生まれていたり、テストが不十分な場合があります。