2011-03-03 20 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,而不是默認應用程序池