这是正确的吗?
是的,过期和最大年龄做同样的事情,但以两种不同的方式。与Last-Modified和Etag相同的东西
如果是这样,我应该怎么做 expires或max-age?
过期依赖于用户时钟的准确性,所以它通常是一个糟糕的选择(因为大多数浏览器支持HTTP/1.1)。使用max-age,告诉浏览器该文件在很多秒钟内都有效。例如,1天的缓存将是:
缓存控制:最大年龄= 86400
注意,当两个Cache-Control
和Expires
存在,Cache-Control
优先。 read
如果我还必须做Last-Modified或ETag,那是哪一个?我想我得到最后修改
你是对的,Last-Modified应该更好。虽然是时候了,但它是由服务器发送的。因此用户的时钟没有问题。浏览器发送的最后修改服务器发送的最后一次请求的文件,如果是相同的,服务器answsers空响应«304未修改»
另外,哪些文件,我应该使浏览器缓存?
所有文件都有益于缓存。你有两种不同的方法:
- max-age:适用于永不改变的文件(图像,CSS,javascript)。只要最大年龄值,浏览器就不会向服务器发送任何请求。所以你会看到第二次加载时页面加载非常快。如果您需要更新文件,只需添加一个问号,更改日期(例如/image.png?20110602,或者更好的代理中的缓存,像/20110602/image.png或/image.20110602.png) 。这样,如果文件紧急,可以使文件过期(请记住,浏览器在有最大文件时几乎不会访问服务器)。主要用途是加快速度并限制发送到服务器的请求。
- 凭借最后修改:可以在所有文件中设置(包括那些具有最大年龄)。即使你有动态页面,你也不能在一段时间内改变文件的内容(即使它是10分钟),所以这可能是有用的。这里的主要用途是告诉浏览器“不断要求我提供这个文件,如果它是新的,我会给你发送新的文件”。因此,每个页面加载都会发送一个请求,但如果文件已经很好(304未修改),则答案为空,因此可以节省带宽。
您缓存越多,速度就越快的页面会显示出来。但冲洗缓存是一项艰巨的任务,请小心使用。
一个良好的学习这一切都与许多解释:http://www.mnot.net/cache_docs/
感谢提供解释。但是,我仍然很难尝试了解如何真正实现您的建议,以实现最大化和最后修改。我在哪里可以找到一些实际代码的例子,我将把它们放在我的htaccess中?我是否需要列出每个图像?我想我基本上理解这里的概念,但需要一些更明确的帮助,看看在htaccess中看起来会是什么样子。 – Andy 2011-06-25 01:56:39
查看在Apache手册的例子:http://httpd.apache.org/docs/2.3/fr/mod/mod_expires.html(模块失效)。例如:ExpiresByType image/gif M604800将在7天后自动修改GIF图像(7 * 86400)。您会在同一页面上找到许多其他示例。 Last-Modified也可能被发送,但我不使用Apache,因此我没有对此进行测试。 – Yvan 2011-08-01 13:13:15
Apache网址坏了,但在这里archive.org住在:(FR)https://web.archive.org/web/20120418030430/http://httpd.apache.org/docs/2.3/fr/mod /mod_expires.html或https://web.archive.org/web/20120418030430/http://httpd.apache.org/docs/2.3/en/mod/mod_expires.html(EN) – ledlogic 2014-01-29 15:53:42