5

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

哪个浏览器正确地遵循 HTTP,如果答案是 Chrome,如何消除 IE 中不必要的 304 调用?

4

2 回答 2

3

只是要清楚:

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

根据您重新加载/刷新页面的方式,也存在细微的差异,尤其是对于 IE。(您是单击刷新按钮,还是按Enterurl 栏?)请参见以下内容:

于 2013-10-29T18:30:58.780 回答
2

IE 有一些涉及缓存的特殊行为。可以说不正确,但与其他浏览器不同。有关更多信息,请参阅此帖子

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

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

我猜就对服务器的请求数量而言,chrome 对您来说不是问题。如果是,您能否更好地解释您在两个浏览器中看到的请求数量以及流程?

于 2013-10-29T18:28:04.903 回答