Apache のコンテンツ タイプに基づいてキャッシュ制御ヘッダーを設定する

Apache のコンテンツ タイプに基づいてキャッシュ制御ヘッダーを設定する

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>

関連情報