2011-03-03 21 views
3

我有一个服务器的请求,如下所示:Firefox和IE:从缓存中检索时损坏的数据

http://localhost/Combine.aspx/flag/file1.js,file2.js,file3.js 

我也试过这个:

http://localhost/Combine.aspx/flag/value/file1.js/file2.js/file3.js 

它简单地组合了它给出的三个文件:这个工作正常。

根据Firefox的第一次请求,页面显示正确。当页面再次刷新时,内容如下所示:

��������`I�%&/m�{J�J��t��`$�����iG#)�*��eVe][email protected]�흼��{���{��;�N' 

在这种情况下,没有请求到服务器,文件只从firefox缓存中检索,据我所知。

如果我使用Control-F5强制刷新页面,页面再次显示正常。

这里是控制-F5(作品)的请求和响应(在萤火虫):

响应

Cache-Control public 
Content-Type application/javascript; charset=utf-8 
Content-Encoding gzip 
Expires Sun, 26 Feb 2012 02:57:26 GMT 
Last-Modified Fri, 07 Jan 2011 21:08:54 GMT 
Etag CLYvZwbFmainWEMi8h-6x-zNEIQ1 
Vary Accept-Encoding 
Server Microsoft-IIS/7.5 
Set-Cookie auth=longstring; path=/ 
X-AspNet-Version 2.0.50727 
X-Powered-By ASP.NET 
Date Thu, 03 Mar 2011 02:57:26 GMT 
Content-Length 918 

请求

Host localhost 
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 115 
Connection keep-alive 
Cookie auth=longstring 
Pragma no-cache 
Cache-Control no-cache 

这里是与相同只是F5(不起作用):

响应

Cache-Control public 
Content-Type application/javascript; charset=utf-8 
Content-Encoding gzip 
Expires Sun, 26 Feb 2012 02:57:26 GMT 
Last-Modified Fri, 07 Jan 2011 21:08:54 GMT 
Etag CLYvZwbFmainWEMi8h-6x-zNEIQ1 
Vary Accept-Encoding 
Server Microsoft-IIS/7.5 
X-AspNet-Version 2.0.50727 
X-Powered-By ASP.NET 
Date Thu, 03 Mar 2011 03:01:31 GMT 
Content-Length 1533 

请求

Host localhost 
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 115 
Connection keep-alive 
Cookie auth=longstring 

我能说的唯一不同的是Content-Length(可能导致损坏),但由于它从未到达服务器,我无法控制它。

这可能导致什么?

编辑:

这也发生在IE8上,但它不是查看损坏的文件,而是下载损坏的文件。没有请求服务器(在visual studio中设置断点)。

对于chrome,当直接查看URL时,每次都会向服务器发出请求,并且每次都有效。但我相信,如果它包含在标签中,它的行为与Firefox类似。

哦,还有:

如果我关闭Expires标头(这是URL中的标志之一),一切正常

编辑2:

我能够通过不发送一个Expires和ETag标头,只有一个或另一个来解决这个问题。我不知道为什么ETag标头会导致这种损坏。

+0

这很奇怪。您是否已经尝试从Firefox的设置中清除缓存?你有没有在其他浏览器上试过这个,看看你是否得到相同的错误? – Aaron 2011-03-03 03:20:54

+0

请参阅编辑,它发生在IE8中,但不是Chrome(直接查看url时)。 – Snea 2011-03-03 05:57:35

+0

我有完全相同的问题。我看了看,但我找不到为什么发生这种情况的原因。 – SharpBarb 2012-01-08 02:45:36

回答

0

这是因为你的IIS配置。调整IIS为ASP 4.0 Classic,而不是默认应用程序池