如何验证是否正在缓存javascript和图像?

时间:2010-03-24 14:56:01

标签: browser caching fiddler

我想验证我的浏览器是否正在缓存属于我的页面的图像,css和javascript文件。我使用过Fiddler和Google Page Speed,目前还不清楚是否有人向我提供我需要的信息。 Fiddler显示了对图像,css和javascript的HTTP 304响应,它应该告诉浏览器使用缓存副本。 Google Page Speed显示304响应,但未显示传输大小为零,而是显示资源的完整文件大小。另请注意,我已经看到Google Page Speed报告200响应,但随后将单词(缓存)放在200旁边(因此状态为200(缓存)),这没有多大意义。

关于我如何验证服务器是否在检索到之后发送回来的图片,css,javascript以及之前的网页点击缓存后的任何其他建议?

4 个答案:

答案 0 :(得分:6)

在浏览器中,HTTP调试器在您的情况下可能是最容易使用的。尝试使用内置蜻蜓的Firefox或Opera的HTTPFox。这两个都表明何时使用了本地浏览器缓存。

如果您似乎收到了相互冲突的信息,那么wireshark / tcpdump将向您显示是否正在下载对象,因为它正在监视正在传输和接收的实际网络数据包。如果您之前没有查看过网络跟踪,那么一开始可能会有点混乱。

答案 1 :(得分:2)

在提琴手中,检查响应体(图像,css)是否为空。还要确保您的max-age在Cache-Control标头中足够长。大多数浏览器(Safari,Firefox)都有很好的流量分析工具。

答案 2 :(得分:1)

您的服务器访问日志可以为您提供有关缓存策略有效性的大量信息。

假设你有一个html页面/home.html,它引用了/some.js和/lookandfeel.css。在给定时间段内,汇总对所有三个文件的请求数。

如果您的缓存有效,您应该会看到大量的home.html请求,但很少有人使用css或js。介于两者之间的是当你看到所有3个请求的数量相同时,但css和js有304个。最糟糕的是当你只看到200秒时。

显然,您必须知道您的申请才能进行此类研究。 js和css文件可能在多个页面之间共享 - 这可能会使您的分析变得复杂。但总体思路仍然很好。

此类研究的优势在于,您可以了解缓存策略对用户的有效性,而不是“缓存在我的计算机上运行”。但是,这不能替代使用http代理/提琴手。

答案 3 :(得分:0)

禁止HTTP / 304响应拥有正文。因此,不会发送完整响应,而是只返回304响应的标头。但往返本身并不是免费的,因此发送适当的到期信息是提高性能的一种很好的做法,以避免产生首先返回304的条件请求。

http://www.fiddler2.com/redir/?id=httpperf详细解释了这个主题。