利用浏览器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-Modified
或ETag
,那是哪一个? 我想我得到Last-Modified
但我仍然很模糊这个ETag
概念。
另外,我应该启用浏览器caching的文件?
它是否正确?
是的,过期和最大年龄做同样的事情,但以两种不同的方式。 和Last-Modified和Etag一样
如果是这样,我应该过期还是最大年龄?
到期取决于用户时钟的准确性,所以它大多是一个不好的select(因为大多数浏览器支持HTTP / 1.1)。 使用max-age,告诉浏览器该文件好几秒钟。 例如,1天的caching将是:
caching控制:max-age = 86400
请注意,当存在Cache-Control
和Expires
, Cache-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/