ahe*_*ick 2 javascript asp.net-mvc caching
我创建了一个非常简单的网站.我试图在浏览器中测试JS缓存,但它似乎没有工作.我认为只要文件名没有改变,默认情况下大多数主流浏览器都会缓存你的JS文件.我在本地IIS 7中运行该站点.
对于我的测试,我有一个简单的JS文件,正在对正文负载进行文档编写.如果我对JS文件进行了更改(更改了文档写入的文本),则保存文件,我看到刷新浏览器时更新了.为什么是这样?只要JS文件名没有改变,我不应该看到原始输出吗?
刷新浏览器时,浏览器会向服务器发送显示页面所需的所有资源的请求.如果浏览器具有任何所需资源的缓存版本,则它可以If-Modified-Since在该资源的请求中发送标头.当服务器收到此标头时,它会将资源的修改时间与If-Modified-Since标头中提交的时间进行比较,而不仅仅是提供资源.如果资源已更改,则服务器将像往常一样以200状态发回资源.但是,如果资源没有更改,服务器将回复状态304(未修改),浏览器将使用其缓存版本.
在您的情况下,修改日期已更改,因此浏览器将发送新版本.
在浏览器中测试缓存的最佳方法可能是在导航站点时使用fiddler并监视请求和响应.避免在测试中使用刷新按钮,因为这经常导致浏览器请求所有资源的新副本(即省略If-Modified-Since标题).
编辑:以上可能是对正在发生的事情的过度简化.当然,网络搜索将产生大量深入的文章,可以更深入地了解浏览器缓存在每个浏览器中的工作原理.