Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http Firefox在304之后未使用文件的缓存副本_Http_Firefox_Iis_Http Headers - Fatal编程技术网

Http Firefox在304之后未使用文件的缓存副本

Http Firefox在304之后未使用文件的缓存副本,http,firefox,iis,http-headers,Http,Firefox,Iis,Http Headers,我在Firefox中看到了一种行为,这在我看来是出人意料的。这不是特别可重复(不幸的是),但确实不时出现。一旦启动,它可以在刷新页面时重复,直到完成完全刷新(ctrl-f5)。上次,我设法找到了踪迹 基本上,FF4.0.1正在请求资源(来自在IIS7下运行的ASP.NET MVC 3应用程序): 然后,它从服务器获得以下响应(通过代理,但我可以在IIS服务器日志中看到请求一直发送到服务器): 这似乎是合理的-客户机发出一个有条件的请求(如果此后修改),服务器响应“确定-使用您的副本”(304未修

我在Firefox中看到了一种行为,这在我看来是出人意料的。这不是特别可重复(不幸的是),但确实不时出现。一旦启动,它可以在刷新页面时重复,直到完成完全刷新(ctrl-f5)。上次,我设法找到了踪迹

基本上,FF4.0.1正在请求资源(来自在IIS7下运行的ASP.NET MVC 3应用程序):

然后,它从服务器获得以下响应(通过代理,但我可以在IIS服务器日志中看到请求一直发送到服务器):

这似乎是合理的-客户机发出一个有条件的请求(如果此后修改),服务器响应“确定-使用您的副本”(304未修改)

问题是,在这种情况下,客户端不会抛出文件-它的行为就像没有内容一样(即,如果是图像,它不会出现;如果是js,它的行为就像页面上缺少.js文件;如果是.css,则页面呈现时没有css样式,等等)。这在网页本身和使用优秀工具时都很明显。HttpWatch清楚地显示浏览器缓存中确实有该项,但没有将其用作内容源

我错过了什么?上面的对话似乎是合理的,那么为什么FF发出有条件的请求,然后在被告知这样做时不使用其缓存副本呢?如果然后按ctrl-F5键强制执行完全刷新,则该行为将消失,并且只偶尔返回

我们也有一些轶事证据表明,FF3和铬也会发生这种情况,但我们还没有用任何法医数据证实这一点


是否有其他人看到了这一点,是否有人知道可能出现了什么问题,或者采取了哪些进一步的措施来隔离问题?

好的-我已经找到了问题的根源。和往常一样,答案就在我面前

问题根本不在于缓存行为。系统的另一部分偶尔出现故障并写出一个零长度的文件,该文件由Firefox缓存

因此,当Firefox向服务器发送一个有条件的请求并收到它的304/未修改时,它会尽职尽责地关闭并使用它在缓存中找到的文件的损坏的零长度版本

所有的标志都在那里让我看到——只是花了一点时间才到达那里:)


谢谢大家的评论和建议。

您所说的“它的行为就像没有内容一样”到底是什么意思。js文件是否未加载并执行,因此会出现后续错误?@alienhard-它的行为就像文件未加载一样。如果是图像,则不显示图像;如果是.js文件,则表现为.js文件丢失;如果是.css,则页面呈现时没有css等。您可以尝试按照中的步骤执行HTTP日志,看看这是否会使事情更清楚。。。如果你不熟悉necko代码,阅读这些代码会有点痛苦,但是如果你想在
irc.mozilla.org
上的
#开发者
,人们可能会根据需要帮助你理解它。只是一个想法,客户端计算机中的日期或多或少准确吗?有没有人在玩把客户机上的日期改成过去和未来的游戏?你是如何解决的?是什么导致文件以零长度写入?这完全是我们这边的一个bug;我们的代码并没有达到预期的效果,而是在编写一个真正的零长度文件
GET http://www.notarealdomain.com/VersionedContent/Scripts/1.0.40.5653/jquery.all.js HTTP/1.1
Host: www.notarealdomain.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: */*
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Referer: http://www.notarealdomain.com/gf
If-Modified-Since: Sat, 01 Jan 2000 00:00:00 GMT
HTTP/1.1 304 Not Modified
Date: Mon, 09 May 2011 14:00:47 GMT
Cache-Control: public
Via: 1.1 corp-proxy (NetCache NetApp/6.0.3P2D5)