IIS7 ASP.NET MVC静态JavaScript文件缓存?

时间:2012-01-26 17:19:41

标签: javascript asp.net-mvc caching

我创建了一个非常简单的网站。我试图在浏览器中测试JS缓存,但它似乎没有工作。我认为只要文件名没有改变,默认情况下大多数主流浏览器都会缓存你的JS文件。我在本地IIS 7中运行该站点。

对于我的测试,我有一个简单的JS文件正在对正文负载进行文档写入。如果我对JS文件进行了更改(更改了文档写入的文本),则保存文件,我看到刷新浏览器时更新了。为什么是这样?只要JS文件名没有改变,我不应该看到原始输出吗?

Here is the simple site我创建了测试。

1 个答案:

答案 0 :(得分:7)

当您刷新浏览器时,浏览器会向服务器发送显示页面所需的所有资源的请求。如果浏览器具有任何所需资源的缓存版本,则它可以在该资源的请求中发送If-Modified-Since标头。当服务器收到此标头而不是仅提供资源时,它会将修改后的资源时间与If-Modified-Since标头中提交的时间进行比较。如果资源已更改,服务器将像往常一样以200状态发回资源。但是,如果资源没有更改,服务器将回复状态为304(未修改),浏览器将使用其缓存版本。

在您的情况下,修改后的日期已更改,因此浏览器会发送新版本。

在浏览器中测试缓存的最佳方法可能是使用fiddler并在导航网站时监控请求和响应。避免在测试中使用刷新按钮,因为这经常导致浏览器请求所有资源的新副本(即省略If-Modified-Since标题)。

编辑:上述内容可能过于简单化了。当然,网络搜索将产生大量深入的文章,可以更深入地了解浏览器缓存在每个浏览器中的工作方式。