1

CSS、画像、jsなどのさまざまなリソースを永久にキャッシュするようにブラウザに強制しようとしています。ページには何千もの小さな画像がある可能性があり、ブラウザが更新しようとするとサーバーに衝撃を与え、ページを不必要に更新モードに保つため、ブラウザが画像/cssを更新しようとしないことが重要です。リクエストパスが変更されない限り、画像/CSSは変更されません。

現在、次のような URL を持つスクリプトに設定された images/css へのパスがあります。

"http://example.com/img/get.php?n=someimage.jpg&v=7"

スクリプトは、リソースを送信する前にこれらのヘッダーを送信しています。

header("Cache-Control: public");
header("Expires: Tue, 19 Jan 2037 00:00:00 GMT");
header("Last-Modified: Sat, 01 Jan 2000 00:00:00 GMT");

ただし、更新ボタンが押されると、Chrome と Firefox の両方がイメージ/css を再要求します。Chrome も、Firefox とは異なり、アドレス バーで Enter キーを押すとリクエストを送信するようです。

私の質問は、ユーザーが [更新] を押しても、Expires ヘッダーによって 2037 年までリクエストが再度行われないようにする必要があるため、なぜこれを行うのかということです。私は何か間違ったことをしていますか、それとも何かが欠けていますか?

4

1 に答える 1

4

できません。お気付きのように、一部のブラウザーでは、「更新」の定義を「更新してキャッシュを更新する」という意味に取っています。

サーバーは、キャッシングに関するガイダンスを Web ブラウザーに提供することしかできず、強制することはできません。

于 2010-12-21T23:36:25.430 に答える