1

私はこれを言葉にするのが難しいと思ったので、我慢してください。

Web サイトを更新していて、クライアントに変更を確認するように依頼すると、前回のキャッシュ結果が常に表示されます。ctrl f5 を押してすべてのキャッシュを更新するように依頼できるので、これは問題ではありません。

私の質問は、クライアント ブラウザにすべてのコンテンツを自動的に更新させる方法はありますか? そして、これに関する通常の基準は何ですか?これによりウェブサイトが高速化されるため、キャッシュを引き続き使用したいと思います。更新されたときに通知できるようにするだけです。

javascriptファイルとcssファイルの場合、ファイルの名前を変更できることを知っているので、ブラウザはそれを新しいファイルとして扱い、myCssFilev1.2.cssなどを再ダウンロードしますが、実際のHTMLはどうですか?

4

4 に答える 4

1

これを行うためのメタ タグがいくつかあります。

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

cache-control、expires、pragma の設定はすべて異なるブラウザーで機能するため、すべてを含めることをお勧めします。それはあなたの問題を解決するはずです。

編集

アリエルが指摘したように、これには注意が必要です。これが高負荷の状況である場合は、おそらく別の解決策を見つける必要があります。「中間点」を見つけようとすることができますが、パラメーターを微調整します (有効期限を設定するか、キャッシュ コントロールの max-age をある値に設定します)。ただし、非常識なサーバー負荷がない場合は、これで問題ありません。

于 2012-07-16T08:44:25.840 に答える
0

HTTP ヘッダー Last-Modified と Etag は、ネット上のトラフィックを減らすために使用します。

Last-Modifiedブラウザはヘッダー付きの Web サーバーにリクエストします。日時がサーバーのファイル時間と同じ場合、サーバーは単に 304 を返します。または、時間が異なる場合、サーバーは 200 を返し、完全なコンテンツを返します。

Etag も同じプロセスを実行します。

If-Modified-Since 、 If-Unmodified-Since のようなものがあります。詳細については etagを参照してください。 rfc2616

于 2012-07-16T09:12:55.140 に答える
0

はい。javascript インクルードがあるとします。

行う:

<SCRIPT src="file.js?<?=filemtime('file.js')?>"></SCRIPT>

これにより、ファイルの変更時刻がファイルの URL に追加されます。そのため、ファイルを変更すると、ブラウザには新しいファイルのように見え、キャッシュされません。

絶え間ないfilemtime呼び出しにより、速度が低下する可能性があることに注意してください。

dirname() __FILE__との組み合わせを使用してPHP_SELF、相対ページから物理ファイル ページを自動計算し、それを関数に入れて、ファイル名を手動で 2 回入力する必要がないようにすることができます。

于 2012-07-16T08:45:20.270 に答える
0

見た目よりもトリッキーです。正直なところ、ブラウザのキャッシュを空にするようにユーザーに指示するのが最も簡単な方法だと思います。最近では、ヒットCtrl+Shift+Delは高速で、Internet Explorer を含むほとんどのブラウザーで動作します。

于 2012-07-16T08:52:52.657 に答える