Coldfusion CGI.HTTP_IF_MODIFIED_SINCE似乎无法在IE中运行

时间:2013-06-07 11:53:47

标签: tomcat caching coldfusion railo

为了防止浏览器每次都加载文件,我使用了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标题?

1 个答案:

答案 0 :(得分:0)

我不确定您为什么要尝试自己管理此功能。让浏览器完成他们设计的工作。如果您将Expires标头设置为将来的某个时间点,浏览器应“自动”执行您要执行的操作;使用本地缓存版本。一旦Expires时间过去,浏览器应该请求新的副本。

您还需要设置Cache-Control标头。此页面提供了对该过程的非常好的描述:Increasing Application Performance with HTTP Cache Headers注意:如果设置了Expires和max-age,则max-age将优先。