Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Browser 如何验证是否缓存了javascript和图像?_Browser_Caching_Fiddler - Fatal编程技术网

Browser 如何验证是否缓存了javascript和图像?

Browser 如何验证是否缓存了javascript和图像?,browser,caching,fiddler,Browser,Caching,Fiddler,我想验证作为页面一部分的图像、css和javascript文件是否被浏览器缓存。我使用了Fiddler和Google Page Speed,现在还不清楚这两者是否提供了我需要的信息。Fiddler显示了HTTP 304对图像、css和javascript的响应,这些响应应该告诉浏览器使用缓存副本。Google Page Speed显示304响应,但不显示传输大小为零,而是显示资源的完整文件大小。另外请注意,我看到Google Page Speed报告了一个200响应,但随后将单词(cache)放

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


关于如何验证服务器在上一次页面点击检索和缓存图像、css和javascript之后是否正在发回它们,还有其他建议吗

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


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

在fiddler中,检查响应主体(对于图像,css)是否为空。还要确保缓存控制标头中的“最大年龄”足够长。大多数浏览器(Safari、Firefox)都有很好的流量分析工具。

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


详细解释此主题。

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

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

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

显然,你必须知道你的申请才能做这样的研究。js和css文件可能在多个页面上共享,这可能会使您的分析复杂化。但总的想法仍然是正确的


这样一项研究的好处是,您可以发现您的缓存策略对您的用户来说有多有效,而不是“缓存在我的机器上工作”。然而,这并不能替代使用http代理/fiddler

所以它会再次发出请求,但只是用一个空的响应来响应?我认为如果资源已被缓存,浏览器不会重新请求该资源。它会再次发出请求——由服务器告诉浏览器该资源是否未被修改(通过给出304响应)。看起来是这样的:HTTP/1.1 304未修改日期:Wed,2010年3月24日14:51:02 GMT.X-Powered-By:Servlet/2.5 JSP/2.1客户端可能会使用缓存副本,并且在最大期限到期或标头到期之前不会发出新请求,在此之后,它可能会询问服务器文件是否仍保持不变(如果自那时起进行了修改)。还存在其他缓存机制,例如Etag。查看并试用HTTPFox,但找不到它的文档。对于产生304响应的资源,它将接收到的文件大小显示为(XXX),例如(1134);对于200响应,它没有括号,例如1134。括号是否表示它是本地缓存的,而文件实际上没有被传输?是的,当然。304响应没有可列出大小的主体。