2011-07-22 7 views
2

ニュースと参照情報を公開する複数のWordpressベースのウェブサイトの管理を手伝っています。ブラウザセッションを強制的にブラウザでキャッシュする

私たちは、ウェブサイトのページをできるだけ早く読み込むよう努めてきました。

私たちがやったことの1つは、画像やCSSファイルなどのほとんどの静的ファイルの "キャッシュコントロール" HTTPヘッダーに非常に長い「最大時代」の時間を実装することです。

私たちが使用している特定のキャッシュ制御設定は "public、max-age = 31536000"です。 31,536,000秒は365日です。

この設定では、訪問者が私たちのサイトの別のページをブラウズする際に静的ファイルがキャッシュされることがあります。

しかし、ここでは擦れがあります。このキャッシュ制御設定は、ブラウザセッション全体ではあまり役に立ちません。設定がブラウザに「1年全体のこのファイルをキャッシュする」と言われても、サイトの訪問者がブラウザをシャットダウンした場合、わずか5分後に起動してサイトに戻り、ブラウザはすべての静的ファイルをキャッシュに残していても、すべての静的ファイルを再ロードします。

これはFirefoxで慎重にチェックされており、ヘッダーはライブHTTPヘッダーで表示されています。しかし、私は他のブラウザでも同じことが定性的に起こるのを見ることができます。

明らかに、ブラウザは、現在のブラウザセッション中にコンテンツが一度読み込まれていない場合、ウェブサイトのすべてのコンテンツを再読み込みするよう求めています。

だから、現在のブラウザセッション中にブラウザがサイトにアクセスしていなくても、常にキャッシュからキャッシュされたコンテンツを読み込むことができますか?

+0

私は上記の問題をさらに深く見てきました。問題はInternet Explorerで主に発生しているようです。私がFirefoxで最初に気づいた問題は、特定のバージョンのFirefoxでのオフラインストレージの設定によるものです。設定を変更したので、Firefoxはブラウザセッション間でキャッシュされたコンテンツを使用することに非常によく似ています。また、Chromeも同じ面でうまく動作しているようです。 Internet Explorer(私はIE7のテストのほとんどを行ってきました)はあまり良くありません。私はより多くのテストを行い、私が見つけたものを報告します。 – BeSimple

答えて

0

ETag、Expires、Last-Modifiedヘッダーも確認してください。

Expiresヘッダーが必要です。また、ETagとLast-Modifiedがキャッシュを無効にすることがあります。

+0

フィードバックのためにありがとう、@ScottAnderson。 – BeSimple

+0

残念ながら、CDNから提供されているため、ほとんどの静的コンテンツのEtagとExpiresの設定を制御することはできません。また、CDNサービスではこれらのHTTPヘッダーを制御することはできません。 – BeSimple

+0

私たちが使用するCDNは、自動的にETagヘッダーを提供する静的ファイルに添付します。 "cache-control"ヘッダーを設定すると、そのファイルに "Expires"ヘッダーは付けられません。つまり、私たちがGoogleのAPIサービスを利用しているページに提供している他のファイルは、ExpiresヘッダーとEtagヘッダーで長時間 "最大限の設定"を持ち、ブラウザセッション全体で再読み込みされています私たちのファイルのように。 Expiresヘッダーがないか、問題の原因となるEtagヘッダーが含まれていないわけではありません。 – BeSimple

関連する問題