为什么FireFox 3.6.8不缓存asp.net开发者服务器上的静态内容?

为什么FireFox 3.6.8不缓存asp.net开发者服务器上的静态内容?,asp.net,http,firefox,browser,caching,Asp.net,Http,Firefox,Browser,Caching,我在一个asp.net网站上工作,和普通用户一样,我们在编码和测试期间使用asp.net开发人员服务器。 今天,我发现firefox没有缓存我网站的任何静态文件,因为我们的应用程序相当大,这使得页面加载时间非常慢。 我检查了firefox:cache,所有静态文件缓存设置如下 Key: http://localhost:26851/App_Layout/icons/actions/email/folder.png Data size: 871 bytes F

我在一个asp.net网站上工作,和普通用户一样,我们在编码和测试期间使用asp.net开发人员服务器。 今天,我发现firefox没有缓存我网站的任何静态文件,因为我们的应用程序相当大,这使得页面加载时间非常慢。 我检查了firefox:cache,所有静态文件缓存设置如下

           Key: http://localhost:26851/App_Layout/icons/actions/email/folder.png
     Data size: 871 bytes
   Fetch count: 1
 Last modified: 2010-08-19 11:59:46
       Expires: 1969-12-31 16:00:00

           Key: http://localhost:26851/Framework/ScriptLibrary/JQueryPlugins/ui.mouse.js
     Data size: 5079 bytes
   Fetch count: 1
 Last modified: 2010-08-19 11:59:39
       Expires: 1969-12-31 16:00:00
FireBug显示如下标题

Server  ASP.NET Development Server/9.0.0.0
Date    Thu, 19 Aug 2010 22:10:27 GMT
X-AspNet-Version    2.0.50727
Cache-Control   public
Etag    "1CB3F32C834A880"
Content-Type    text/css
Content-Length  1775
Connection  Close
Firebug还有一个名为“缓存”的选项卡,信息如下:

Last Modified   Thu Aug 19 2010 15:10:27 GMT-0700 (Pacific Daylight Time)
Last Fetched    Thu Aug 19 2010 15:10:27 GMT-0700 (Pacific Daylight Time)
Expires Wed Dec 31 1969 16:00:00 GMT-0800 (Pacific Standard Time)
Data Size   1775
Fetch Count 10
Device  disk
过期日期设置为1969年12月31日,我相信这就是为什么它们每次都被加载的原因。 我使用的是VisualStudio2008,Windows7机器。应用程序在IE中运行良好,内容被正确缓存

以前有人见过这种行为吗?

ASP.net开发服务器 根据我运行的,它缓存文件,即304s(未修改)响应完成

  • ScriptResource.axd
  • WebResource.axd
IE 8和FF 3.6.8中出现相同的行为 IE8必须设置为自动检查页面的新版本,才能发生这种情况


非法移民 在IIS上运行它会导致FF和IE缓存静态内容


这种缓存是由于Web服务器向响应添加了一个头


您可以使用
localhost(),让fiddler收听
localhost
而不是()。

您需要发出Expires头,使Firefox缓存文件


否则,您认为它如何猜测需要缓存文件多长时间?

您可以尝试将其中一个文件添加到页面加载功能中-

选项1

        Response.ClearHeaders();
        Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
        Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
        Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
        Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
        Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1 
        Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1 
        Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1
选项2

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1))
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.Cache.SetNoStore()

您还可以在本地IIS Web服务器上托管该页面,而不是在VS开发服务器上运行它。在IIS中,您可以根据需要指定过期标头设置

谢谢大家帮我解答这个问题。我相信我找到了FireFox在Windows7上运行速度非常慢的原因。当我使用WindowsXP时,我没有注意到它的缓慢

首先,Firefox不会缓存来自asp.NETWebDeveloper服务器的任何资源。这一事实在XP或Windows7中不会改变。
当我今天使用firebug检查资源下载时,我注意到DNS查找需要几秒钟的时间。然后我发现对于windows 7默认安装,windows\system32\driver\etc下的主机文件不包含DNS条目127.0.0.1 localhost。通过将此行添加到主机文件。我的网站和以前一样快

使用或类似方法,然后发布站点正在发送的实际响应标题。browser.cache.check\u doc\u frequency的默认值为3。在我使用XP之前,localhost运行良好。模式3似乎与IEs自动检查新版本相同。这是正确的答案。没有“Expires”标题是你的问题。如果我创建了一个新项目,一切正常。问题是它以前没有添加expires头。我对静态内容(gif、css)有问题。一旦我移动到生产站点,我们就可以在IIS中设置过期时间。我不认为硬代码过期是一个好主意。我怀疑Windows7或最新的firefox有什么变化。我的网站在IIS中工作没有任何问题。您知道asp.net开发人员服务器提供了更简单的调试体验。@Russel Yang-此答案的任何更新。我在我的一个网络应用程序中使用了这个,没有发现任何问题。如果您在这段代码中遇到任何问题,请务必让我知道,以便我可以尝试您的方案并更新我的应用程序。我相信这会奏效。我只是不明白为什么Firefox没有缓存静态文件。IE 7可以正常工作(访问相同的asp.net服务器)。它以前工作过,没有添加响应头。在我切换到Windows7和Firefox 3.6.8之后,我注意到了这个字符串行为,同时也注意到IPv6导致了这个(::1)看到了吗