Cache-Control ヘッダー: max-age=300、public をすべての公開サイト ページに設定しようとしています。Filesmatch を使用するには、アプリケーション ページに拡張子が付いていません。ExpiresByType は使用できますが、独自の欠点があります。
コンテンツ タイプが text/html であるすべてのアプリケーション ページにキャッシュ制御ヘッダーを設定する方法を探しています。これを実現する方法はありますか?
答え1
より安全な方法は (開発者がContent-Type
ファイル拡張子の設定時にミスをする可能性があるため)、実際の に基づいてヘッダーを設定することですContent-Type
。
<IfModule mod_headers.c>
Header set Cache-Control "max-age=300, public" "expr=%{CONTENT_TYPE} =~ m#text/html#i"
</IfModule>
答え2
ブラウザは、.html 拡張子がなくても、それが text/html MIME タイプ ドキュメントであることを認識できます。ヘッダーがクライアント ブラウザにドキュメントが実際に text/html MIME タイプであることを伝えている限り、これで十分です。
ExpiresByType text/html "access plus 300 seconds"
「独自の欠点がある」という部分について詳しく説明していただければ、それについてもコメントできるかもしれません。
答え3
mod_expires は使用できないので、代わりに mod_headers を使用できるかもしれません:Apache 2.2 の .mod は、以下の URL からダウンロードできます。。
ヘッダーと組み合わせてfilesMatchを使用することができます
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=300, public"
</filesMatch>