利用浏览器caching – 过期或最大年龄,最后修改或etag

我很难find一个明确的,实际的解释是什么是利用浏览器caching来提高页面速度的正确方法。

根据这个网站 :

为所有可caching资源指定Expires或Cache-Control max-age之一,以及Last-Modified或ETag之一。 指定Expires和Cache-Control:max-age,或指定Last-Modified和ETag都是多余的。

它是否正确? 如果是这样,我应该使用Expires还是max-age ? 我想我对这两者都有一个大概的了解,但不知道通常最好使用哪一种。

如果我还必须做Last-ModifiedETag ,那是哪一个? 我想我得到Last-Modified但我仍然很模糊这个ETag概念。

另外,我应该启用浏览器caching的文件?

它是否正确?

是的,过期和最大年龄做同样的事情,但以两种不同的方式。 和Last-Modified和Etag一样

如果是这样,我应该过期还是最大年龄?

到期取决于用户时钟的准确性,所以它大多是一个不好的select(因为大多数浏览器支持HTTP / 1.1)。 使用max-age,告诉浏览器该文件好几秒钟。 例如,1天的caching将是:

caching控制:max-age = 86400

请注意,当存在Cache-ControlExpiresCache-Control优先。 读

如果我还必须做Last-Modified或ETag,哪一个? 我想我得到最后修改

你是对的,Last-Modified应该更好。 虽然这是一个时间,但它是由服务器发送的。 因此用户的时钟没有问题。 浏览器发送上一次请求文件时发送的服务器的Last-Modified,如果相同,则服务器回答空的响应«304 Not Modified»

另外,我应该启用浏览器caching的文件?

所有的文件都可以使caching受益。 你有两种不同的方法:

  • 与最大年龄:有用的文件永远不会改变(图像,CSS,JavaScript)。 只要最大年龄值,浏览器就不会向服务器发送任何请求。 所以你会看到第二次加载的页面加载非常快。 如果您需要更新文件,只需附加问号和更改date(例如/image.png?20110602,或者更好的代理caching,例如/20110602/image.png或/image.20110602.png) 。 这样,如果文件紧急,就可以使文件过期(请记住,浏览器在有最大文件时几乎不会访问服务器)。 主要用途是加快速度并限制发送到服务器的请求。
  • 使用Last-Modified:可以在所有文件(包括具有max-age的文件)上设置。 即使你有dynamic页面,你也不可能在一段时间内改变文件的内容(即使是10分钟),所以这可能是有用的。 这里的主要用途是告诉浏览器“不断问我这个文件,如果是新的,我会给你发新的”。 所以,每个页面加载都有一个请求,但是如果文件已经很好(304 Not Modified),那么答案是空的,所以你节省了带宽。

caching越多,页面显示的速度就越快。 但是清理caching是一件困难的事情,所以要谨慎使用。

一个很好的地方学习所有这些与许多解释: http : //www.mnot.net/cache_docs/