.htaccess ファイルを使用して Web サイトのヘッダーを設定しています。ファイルに変更が加えられた後、ファイル キャッシュが期限切れになるように設定する方法を知りたいです。これは可能ですか?
つまり、これは機能しますか?
ExpiresDefault "modification"
言い換えれば、ファイルがサーバーから変更されるまでキャッシュを維持したいのです。
.htaccess ファイルを使用して Web サイトのヘッダーを設定しています。ファイルに変更が加えられた後、ファイル キャッシュが期限切れになるように設定する方法を知りたいです。これは可能ですか?
つまり、これは機能しますか?
ExpiresDefault "modification"
言い換えれば、ファイルがサーバーから変更されるまでキャッシュを維持したいのです。
Expires 変更は、ファイルが最後に変更されてから一定時間後にキャッシュが期限切れになるように設定します。設定されたキャッシュ時間制限内にファイルが再度変更されたとしても、既にファイルをキャッシュしているクライアントは新しいバージョンを見つけようとしません。 Apache Expirationには、expire モジュールに関する情報が含まれています。
次に例を示します。
#BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(css|js)$">
ExpiresDefault "modification plus 4 weeks"
</filesMatch>
</ifModule>
# END Cache-Control Headers
css ファイルが 1 週間前に変更された場合、キャッシュは 4 週間ではなく 3 週間で期限切れになります。
では、ファイルが既にキャッシュされた後で、新しく変更した css ファイルを表示するにはどうすればよいでしょうか?
css ファイルを変更した場合、キャッシュの有効期限が切れるまで、変更はキャッシュされたブラウザーに表示されません。この問題を回避する 1 つの方法は、キャッシュされた css ファイルの名前を変更することです。(例の名前変更 main1.css -> main2.css )
期限切れヘッダーについて間違った考えを持っていると思います。期限切れヘッダーは、ファイルをローカルにキャッシュできる期間を受信者に通知します。この期間の後、受信者はリソースを再要求する必要があります。リソースが 1 時間後に期限切れになるとサーバーが言ったが、リソースが 1 分後に変更された場合。受信者がこの変更されたバージョンを取得するまで、さらに 59 分かかります。リソースが期限切れになったことをサーバーがレシーバーに通知する方法はありません。