Apache 2.2でDrupal(最新バージョン7.22)を実行しています。また、Varnish(モジュールとプロキシ)もインストールしています。Apacheでは、mod_deflateモジュールを無効にしました。Webを読んでいると、Drupalのパフォーマンスページのオプション(集約css、js)はcssファイルとjsファイルを圧縮すべきではないようです。しかし、自分のサイトを閲覧してhttpヘッダーを確認すると、「Content-Encoding:gzip」を受信しています。(デフォルト).htaccessを見ると、gzipで圧縮されたファイルを、それらを読み取ることができるクライアントに提供するために、いくつかの書き換えルールがあることがわかります。だから、これが "Content-Encoding:gzip"ヘッダーの出所だと思います。また、drupalのパフォーマンス設定ページでキャッシュされたページの圧縮を有効にすると、要求しているページのhtml(匿名ユーザーのみ)でも圧縮されて返されます。
1)「CSSファイルを集約して圧縮する」オプションを実行します。および「集約JavaScriptファイル」。実際に集約されたファイルを圧縮しますか、それとも.htaccessがそれらをgzipしたように見えるだけですか?Chromeデベロッパーツールを使用すると、ファイルは圧縮されているように見えます。しかし、Firefoxの開発者ツールバーアドオンでそれらをチェックすると、(情報->ドキュメントサイズの表示)圧縮されたものとして報告されません(認証済みユーザーとしてアクセスした場合でも、htmlファイルは常にそのように報告されます!)
2)それらが実際にgzipされている場合、圧縮はどこで行われますか?どういうわけか圧縮などのレベルを制御できますか?
3)X-Drupal-Cache "MISS"を常に受け取っています。Varnishがインストールされているので、あまり気にしません。それでも、キャッシュにアクセスしていないため、圧縮されたhtmlファイル(キャッシュにない)が返されるのはなぜですか?
4)Varnishモジュールが何かを混乱させる可能性はありますか?どんな場合でもVarnishがバイパスされるように、httpsでWebサイトにアクセスしています。
5)mod_deflateを有効にする場合、.htaccessのその部分をそのまま残すべきですか?mod_deflateでは事前圧縮ができないことを理解していますが、圧縮の方が優れている場合はどうなりますか?
6)また、drupalがそれ自体でcss、js、htmlファイルを圧縮する場合、これらのファイルに対してmod_deflateを有効にする意味は何ですか?
参考のために、ここに私の.htaccessファイルの関連部分を示します。
<IfModule mod_headers.c>
# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
# Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>