web-dev-qa-db-ja.com

Apacheで特定のファイルのキャッシュをオフにする

Firefoxでrandom() twigを使用するサイトにページがあり、ページが読み込まれるとすぐにキャッシュされるため、Chrome)は動作しません。

Apache configsを介して特定のファイルのキャッシュをオフにする方法はありますか?default.htmlまたはさらに良いのは、そのファイルのスクリプト部分のキャッシュをオフにして、画像ファイルのキャッシュを維持するだけですか?

私が試してみました .htaccessしかし、これは機能しません。

現在、スクリプトを機能させる唯一の方法は、PHPヘッダーを使用してグローバルにキャッシュをオフにすることです:

<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');
?>

しかし、個々のページのキャッシュをオフにするだけでよいので、すべてのキャッシュをオフにするのはおかしいようです。

16
Level

特定のファイル(この場合はindex.php)を対象とするには、このコードを.htaccessの最後に追加します

<Files index.php>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</Files>

または、特定のファイルの選択をターゲットにする、つまり画像をキャッシュしたいが、他には何もない(html, htm, js, css, phpに一致するファイルはキャッシュされない):

<filesMatch "\.(html|htm|js|css|php)$">
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</filesMatch>

.htaccessが読み取られていることを確認するために、下部に数行のゴミを入力しました。読み取られていないことがわかり、htaccessから.htaccessに名前を変更しました。

31
Level