gpt4 book ai didi

http - Firefox 在 304 之后不使用缓存的文件副本

转载 作者:可可西里 更新时间:2023-11-01 16:31:12 26 4
gpt4 key购买 nike

我在 Firefox 中看到了一个我认为出乎意料的行为。这不是特别可重复(不幸的是)但确实会不时出现。 一旦开始,它在刷新页面时是可重复的,直到完成完全刷新 (ctrl-f5)。上次,我设法得到了踪迹。

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

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

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

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)

这似乎是合理的 - 客户端发出条件请求(if-modified-since),服务器响应“ok - 使用你的副本”(304 Not Modified)。

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

我在这里错过了什么?上面的对话看起来很合理,那么为什么 FF 会发出条件请求,然后在被告知这样做时不使用其缓存的副本呢?如果您随后按 ctrl-F5 键强制进行完全刷新,该行为就会消失,并且只会偶尔返回。

我们也有一些轶事证据表明,FF3 和 Chrome 也会发生这种情况,但我们尚未通过任何取证数据证实这一点。

有没有其他人看到过这个,有没有人知道可能出了什么问题,或者可以采取哪些进一步的步骤来隔离问题?

最佳答案

好的 - 我找到了这个问题的根源。一如既往 - 答案就在眼前!

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

因此,当 Firefox 向服务器发送条件请求并收到 304/Not Modified 时,它会尽职尽责地使用它在缓存中找到的损坏的零长度版本的文件。

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

谢谢大家的意见和建议。

关于http - Firefox 在 304 之后不使用缓存的文件副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5964452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com