タグ: #Apache
静的コンテンツをブラウザキャッシュで高速化するための apache の設定
というわけで、apache - httpd.conf の設定はこんな感じにしています。コンテンツ圧縮も使って更にネットワーク負荷を軽減しています。
apache 2 系の httpd.conf
## mod_headers FileETag none Header onsuccess append Cache-Control private, max-age=86400 ## mod_expires ExpiresActive On ExpiresByType image/jpeg "access plus 1 days" ExpiresByType image/png "access plus 1 days" ExpiresByType image/gif "access plus 1 days" ExpiresByType text/css "access plus 1 days" ExpiresByType text/javascript "access plus 1 days" ExpiresByType application/x-javascript "access plus 1 days" ExpiresByType application/javascript "access plus 1 days" ## mod_deflate DeflateCompressionLevel 5 AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rdf+xmlapache 1.3 系の httpd.conf
## mod_headers Header append Cache-Control "private, max-age=86400" ## mod_expires ExpiresActive On ExpiresByType image/jpeg A86400 ExpiresByType image/png A86400 ExpiresByType image/gif A86400 ExpiresByType text/css A86400 ExpiresByType text/javascript A86400 ExpiresByType application/x-javascript A86400 ExpiresByType application/javascript A86400 ## mod_gzip LogFormat "%h %l %u %t \"%r\" %>s %b mod_gzip: %{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info LogFormat "%h %l %u %t \"%r\" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info2 CustomLog /usr/local/lib/apache/logs/gzip_log common_with_mod_gzip_info2 mod_gzip_send_vary No mod_gzip_on Yes mod_gzip_static_suffix .gz AddEncoding gzip .gz mod_gzip_update_static No mod_gzip_dechunk yes mod_gzip_keep_workfiles No mod_gzip_minimum_file_size 1000 mod_gzip_maximum_file_size 0 mod_gzip_maximum_inmem_size 60000 mod_gzip_keep_workfiles No mod_gzip_temp_dir /tmp mod_gzip_handle_methods GET POST mod_gzip_item_include mime ^application/x-httpd-cgi mod_gzip_item_include mime ^application/x-httpd-php mod_gzip_item_include handler ^perl-script$ mod_gzip_item_include handler ^server-status$ mod_gzip_item_include handler ^server-info$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^httpd/unix-directory$ mod_gzip_item_include file \.shtml$ mod_gzip_item_include file \.htm$ mod_gzip_item_include file \.html$ mod_gzip_item_include file \.txt$ mod_gzip_item_include file \.php$ mod_gzip_item_include file \.pl$ mod_gzip_item_include file \.cgi$ mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude file \.css$ mod_gzip_item_exclude file \.js$ mod_gzip_min_http 1001
最後ですが、上記のような設定を行った場合のリスクについて理解しておく必要があります。上記設定を適用すると、一度表示した画像など静的コンテンツは、丸一日の間ブラウザキャッシュのみが利用されます。何らかの理由でコンテンツを更新した場合でも、条件付き GET リクエストすら発生しないため、最新のファイルが反映されないこととなります。
したがって、コンテンツ更新の頻度が高いファイルに対しては、上記設定を行うことにより不具合が発生します。逆にほぼ静的のままの画像等のコンテンツは上記設定が、高速化にかなり効いてきます。
僕的な使い方は、サイトのリニューアル前には、数日にわたり設定を一時的に OFF にして、リニューアルして落ち着いた時点で、再度 ON にする運用をしていました。
その他にファイル名にバージョンを加えることで名前をユニークにするテクニックもあります。
ブラウザキャッシュによる HTTP 高速化チューニング :: Drk7jp
静的コンテンツ配信時のApacheチューニングの小話です。
なお、全てを設定すれば良いというわけではない所は要注意です。
2年前 | 固定リンク | 2010年 5月 24日 | 
