Html 资源状态 - 来自缓存与未修改 - 在谷歌浏览器 DOM 分析器中

Posted

技术标签:

【中文标题】Html 资源状态 - 来自缓存与未修改 - 在谷歌浏览器 DOM 分析器中【英文标题】:Html resources status- from cache vs not modified - in google chrome DOM analyzer 【发布时间】:2011-10-08 18:11:11 【问题描述】:

在谷歌浏览器中,我在启用 DOM 检查器 (F12) 后转到了一个 asp.net 网站 URL。如果我选择“网络”选项卡,我可以看到请求的资源及其状态、时间线等。在随后的请求中,我看到某些项目的状态显示为“304 未修改”,有些项目显示为“(来自缓存)”,包括.js、.css 和图像文件。

我在想所有的 CSS 和图像都被缓存了,至少如果我立即请求页面的话。这两个状态消息是否相同,有人可以解释一下吗?

【问题讨论】:

【参考方案1】:

我猜想区别在于304 表示浏览器发送了请求,服务器 表示资源没有改变,而from cache 状态可能表示 Chrome 没有甚至不发送请求——浏览器知道使用缓存而无需联系服务器。

这可以使用 Fiddler 之类的工具进行验证,以查看是否曾经请求过 from cache 资源。

【讨论】:

这也是我最初的想法,但是 css 文件 #1 和 #2 之间确实没有区别,那么浏览器为什么发送请求 1 而不是 2。有什么具体的我需要对文件做具体的缓存吗? 缓存主要由响应头控制,而不是内容。你检查过它们是否不同? 每个资源(css 文件、图像等)是否有响应头。对不起,我对这些细节有点陌生。如果是这样,如何设置它们,比如图像文件? 是的;浏览器使用单个请求检索每个资源(.js、.html、.jpg 等)并在单个响应中返回。标头由网络服务器设置,并且可以由您的应用程序以编程方式设置(但具体情况因语言、框架和网络服务器而异) 仍然没有解释为什么其中一些来自缓存而另一些不是。但我会对此做一些研究。我用的是asp.net,我以为浏览器默认缓存了所有的css文件。

以上是关于Html 资源状态 - 来自缓存与未修改 - 在谷歌浏览器 DOM 分析器中的主要内容,如果未能解决你的问题,请参考以下文章

常用状态码总结

web开发,http状态须知

WinServer-IIS-压缩及缓存

http状态码

HTTP:常见的状态码

文件下载的缓存策略