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 Cache Headers 提高应用程序性能注意:如果同时设置了 Expires 和 max-age,则 max-age 将优先。

于 2013-06-07T13:36:32.943 回答