静的ファイル(パス:mystaticfile.js.php
など)を構成オプションで変更できるようにするため、静的なjavascriptファイルがPHPによって生成されるアプリケーションがあります。キャッシュ設定が機能しなくなり、これらのリソースがすべてのページの読み込み時に再読み込みされていることを除いて、すべてうまく動作します。PHPファイルのキャッシュヘッダーが機能しない
PHPファイルはキャッシュの設定を設定しようとする次のヘッダーを使用しています、
$expires= 60 * 60 * 24 * 60; //cache for 60 days
header('Pragma: public');
header('Cache-Control: max-age=' . $expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
header("content-type: application/x-javascript");
ただし、ファイルが提供されている場合、それらがどのように見えるのヘッダー見せている:
HTTP/1.1 200 OK
Date: Sun, 06 Nov 2016 19:18:00 GMT
Server: Apache/2.2.15 (CentOS)
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 744
Keep-Alive: timeout=15, max=95
Connection: Keep-Alive
Content-Type: application/x-javascript
私を最初に考えたのは、ApacheにはExpiresActive
フラグが設定されているが、PHPファイルにはExpiresByType
のルールが設定されていないためです。
オンライン読み、それは問題になる可能性がETag
の問題のように聞こえるが、私はhttp.confファイルに
Header unset Pragma
FileETag None
Header unset ETag
を追加しました(し、サービスの再起動)し、まだサイコロをしました。
どのような考えですか?
どのブラウザがそう – nogad
が、それは何の違いを作るべきではありません@nogadことをキャッシュし.jsファイル。ヘッダーが設定され、ブラウザーはそれらをJSファイルとして認識します。問題は、ブラウザがphpによってヘッダが設定されているにもかかわらず、キャッシュしないように指示されていることです。 –
ヘッダ( 'header( 'Foo:bar');')を追加してみてください。適用されますか? –