Internet Explorer与Chrome缓存

时间:2013-10-29 18:20:19

标签: internet-explorer google-chrome browser-cache

基本上,我试图通过启用缓存来使我的网站更加用户友好。为了测试我的进度,我正在使用Chrome和Linux中的开发人员工具。 IE的最终目标是最小化对Web服务器的调用次数。当chrome缓存某些东西时,开发的工具会给出 200(缓存)的请求响应。另一方面,IE将始终向服务器发送一个小请求,并在从其缓存中读取之前获得 304响应

哪个浏览器正在关注HTTP,如果答案是Chrome,我该如何消除IE中不必要的304次调用?

2 个答案:

答案 0 :(得分:3)

要明确:

  • 304 - 服务器响应,指示自上次以来未修改的资源 请求
  • 200 - 指示返回资源的服务器响应 成功
  • 200(缓存) - Psuedo浏览器响应,表示已加载项目 来自本地缓存

根据您重新加载/刷新页面的方式,也存在细微差别,尤其是对于IE。 (您是否单击了刷新按钮,或者在网址栏上按 Enter ?)请参阅以下内容:

答案 1 :(得分:1)

IE有一些涉及缓存的特定行为。可以说不是不正确,但与其他浏览器不同。有关详细信息,请参阅this post

一种不遵循最佳实践(!)的技术,是确保您的过期日期是未来的健康时间,并且不会将最后修改日期发送到IE。然后,IE将不会发送if-modified-since请求,而是仅在缓存过期时发送请求。在这种情况下,它将获得一个新文档(200)而不是304.这个新文档应该将过期日期设置为将来的健康时间。因此,通过使用将来有过期日期的缓存版本来消除许多请求。

if-modified-since请求是304响应的核心。如果自IE发送以来文档尚未被修改,则304响应是正确的。问题是,如果您的过期时间是过去的,即将始终发出此请求(每次都要调用服务器!)..并且永远不会获得新的过期日期。因此,它将继续进行相同的调用,您的服务器将继续使用相同的304响应进行回复。

我猜测Chrome对服务器的请求数量不是问题。如果是,你能更好地解释你在两种浏览器和流程中看到的请求数量吗?