缓存CSS和JS文件

18

当我在不到2-3分钟内刷新我的网站时,Firebug会显示这些漂亮的请求:

1. /core.css          304 Not modified
2. /core.js           304 Not modified
3. /background.jpg    304 Not modified

但是当我在三分钟后刷新页面时,出现以下情况:

1. /core.css          200 OK
2. /core.js           200 OK
3. /background.jpg    304 Not modified

为什么我的CSS和JS文件会再次下载,而图像不会?

我正在使用ASP.NET MVC 3,我没有使用[OutputCache],在我的/Content文件夹中(其中包含所有css、js和img文件的子文件夹),我有这个Web.config:

<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
        </staticContent>
    </system.webServer>
</configuration>

如何仅设置HTTP标头Cache-Control: max-age=86400。所以基本上,CSS、JS和图像被同样对待,但不知何故CSS和JS不能缓存更长的时间...为什么会这样呢?


1
你为什么不使用 [OutputCache] - Maxim Zaslavsky
因为这是静态内容。我对静态内容缓存很感兴趣,我怀疑它与ASP.NET MVC无关,但我提到它是因为我不知道所有的东西,也许有一些解决方案... - Darmak
3个回答

13

如果您正在使用jQuery和一些不同的插件(例如jqGrid),那么打开此选项的效果是巨大的,至少在Fiddler中飞过的东西已经减少了。 - Stephen Patten

2
这种情况是出现在IIS或Visual Studio Web服务器上?我在开发时(使用VS Web服务器)有一段时间感受到了这种行为,但当我将其发布到IIS时,就不再出现这种情况了。

0

这可能是Firefox中描述的错误吗?

您可以通过在另一个浏览器中打开相同的页面并使用Fiddler或其他工具检查加载了什么来进行测试。


我刚刚注意到这个错误在2010年5月9日已经被解决了。因此,这个修复程序可能已经包含在最新版本的FF中。 - Peter
我有最新版本 :) - Darmak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接