web-dev-qa-db-ja.com

Apache 2.2.3を設定して「最終変更」などを送信する方法

最後の訪問時以降に変更された場合にのみオブジェクト(および/またはページ...サイト上のすべて)をリロードするようにブラウザに指示するには??? htaccess、httpd.conf ...私のケースに対応する準備ができていますか?どうもありがとうございました

9
smepie

html5boilerplate.com には、考慮すべき多くの標準設定がある よくコメントされた.htaccessファイル が含まれています。それらの中には、コンテンツを期限切れにするための合理的な設定があります(Expires、E-tagsなど)。

これが mod_expiresのドキュメント です。

7
matthew

Last-Modifiedヘッダーは弱いキャッシュヘッダーであることに注意してください。現在の設定では、Cache-Controlヘッダーを使用しています。

グーグルはこれに関する良い記事を持っています。

キャッシュの最適化

Expires and Cache-Control:max-age。これらは、リソースの「フレッシュネスライフタイム」、つまりWebサーバーから新しいバージョンが利用可能かどうかを確認せずにブラウザがキャッシュされたリソースを使用できる期間を指定します。それらは無条件に適用される「強力なキャッシングヘッダー」です。つまり、リソースが設定されてリソースがダウンロードされると、ブラウザは、有効期限または最大経過時間に達するまで、リソースに対するGETリクエストを発行しません。

Last-ModifiedおよびETag。これらは、ブラウザがファイルが同じであるかどうかを判断するためにチェックするリソースに関するいくつかの特性を指定します。 Last-Modifiedヘッダーでは、これは常に日付です。 ETagヘッダーでは、これはリソースを一意に識別する任意の値にすることができます(ファイルバージョンまたはコンテンツハッシュが一般的です)。 Last-Modifiedは、ブラウザがヒューリスティックを適用してキャッシュからアイテムをフェッチするかどうかを決定するという点で、「弱い」キャッシングヘッダーです。 (ヒューリスティックはブラウザーによって異なります。)ただし、これらのヘッダーを使用すると、ユーザーが明示的にページをリロードしたときに条件付きGETリクエストを発行することにより、ブラウザーはキャッシュされたリソースを効率的に更新できます。条件付きGETは、サーバーでリソースが変更されない限り完全な応答を返さないため、完全なGETよりもレイテンシが低くなります。

Cache-ControlまたはExpiresヘッダーは強力なキャッシュヘッダーであるため、必要に応じて使用することをお勧めします。一部のシステムでは、最終更新日が無視されます。

次に、curlまたは http://redbot.org などのツールを使用してヘッダーを確認できます。

5
jeffatrackaid