0

ブラウザーが毎回ファイルをロードするのを防ぐために、HTTP_IF_MODIFIED_SINCE ヘッダーを使用します。ヘッダーが入力されていないか、有効期限が過ぎていないかを確認します。そうでない場合は、304 ステータス コードを返します。

<cfset modSince = "#cgi.HTTP_IF_MODIFIED_SINCE#">
<cfif modSince EQ "" || modSince NEQ "" AND ParseDateTime(modSince).after(datum)>
    <cfheader name="Last-Modified" value="#SimpleDateFormat.format(datum)#">
    <cfheader name="Expires" value="#SimpleDateFormat.format(expirevalue)#">
    <cfcontent reset="true" type="#mimetype#" file="#bestand#">
<cfelse>
    <cfheader statuscode="304" statustext="Not Modified" />
</cfif>

Chrome と Firefox で完全に動作します (開発者ツールがファイルが 304 ステータス コードを返すと述べているため、ファイルはキャッシュによって読み込まれます)。IE (8、9、10 テスト済み) はそうではありません。そのステータス コードは常に 200 です。IE に if-modified-since ヘッダーを強制的に送信させるには、特別なヘッダーが必要ですか?

4

1 に答える 1

0

この機能を自分で管理しようとしている理由がわかりません。ブラウザに設計どおりの作業をさせてください。Expiresヘッダーを将来のある時点に設定すると、ブラウザはあなたがしようとしていることを「自動的に」実行するはずです。ローカルにキャッシュされたバージョンを使用します。Expires時間が経過すると、ブラウザーは新しいコピーを要求する必要があります。

Cache-Controlヘッダーも設定する必要があります。このページでは、このプロセスについてかなり詳しく説明しています: HTTP キャッシュ ヘッダーを使用したアプリケーション パフォーマンスの向上。注: Expires と max-age の両方が設定されている場合、max-age が優先されます。

于 2013-06-07T13:36:32.943 に答える