- http://hain.jp/index.php/tech-j/2007/04/02/mod_layout
- http://linux.mini13i.gotdns.org/Apache/mod_layout.html
- http://download.tangent.org/
- http://d.hatena.ne.jp/hogem/20070424/1177386989
コンテンツ作ってる人がやたらと.htmlでSSIを使いたがるので理由を聞いたところ、「ページのヘッダとフッタ、メニューで共通の部分があるから」と答えが返ってきた。なるほど。でも、それmod_layoutで出来るよ。サーバ負荷の面ではSSIよりmod_layoutのほうが有利そうだし。
とはいえ、コンテンツの作り方が変わると運用負荷が上がるので、よほど特別なサイトでなければやらないだろうけど。後学のために動作確認。
httpd.conf
.htmlにLAYOUTフィルタを設定する。
<Location /layout/> AddOutputFilter LAYOUT .html LayoutHeader /header.html LayoutFooter /footer.html LayoutIgnoreURI /layout/nolayout/* </Location>
基本的にこれだけ。簡単だ。
mod_deflateとの組み合わせ
DEFLATEフィルタと組み合わせると動かなかった。LayoutHeader、LayoutFooterのhtmlは圧縮されないけど、アクセスしたhtmlだけが圧縮されていた。
$ curl http://www.example.com/layout/ -H 'Accept-Encoding: gzip' 2> /dev/null | zcat - zcat: stdin: not in gzip format $ curl http://www.example.com/layout/ -H 'Accept-Encoding: gzip' 2> /dev/null header test <br> ?())????,???*??I??/-?/I-.???KI???(??Q?I*?? c*footer test <br>
対応策
こないだ試行錯誤した方法で、mod_layout対象のページを強制的に非圧縮にして回避した。なんだかなぁ。