2

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

关于如何验证服务器是否在通过前一页命中检索和缓存图像、css、javascript 后,是否有其他建议?

4

4 回答 4

6

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

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

于 2010-03-24T15:00:45.027 回答
2

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

于 2010-03-24T15:12:10.070 回答
1

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

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

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

显然,你必须知道你的应用程序才能进行这样的研究。js 和 css 文件可能会在多个页面之间共享 - 这可能会使您的分析复杂化。但总体思路还是不错的。

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

于 2010-03-27T08:21:08.103 回答
0

HTTP/304 响应禁止有正文。因此,不会发送完整响应,而您只需取回 304 响应的标头。但是往返本身不是免费的,因此发送正确的过期信息是提高性能以避免发出返回 304 的条件请求的好习惯。

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

于 2010-03-24T22:15:07.147 回答