我想向用户提供最新的网站内容,但也要快速加载。通过研究,我发现人们建议使用缓存来加速加载。
那么我需要在3天后添加到我的网站以“覆盖”缓存以显示最新内容?
答案 0 :(得分:16)
在HTTP 1.1中使用Cache-Control标头来控制缓存的行为。 max-age指令用于指定内容在变为陈旧之前的最大年龄(以秒为单位)(即,内容在一段时间内不会改变)。因此,如果您知道您的内容将在3天内不会更改,则您希望服务器添加以下HTTP标头:
Cache-Control: max-age=259200
(259200 = 60s x 60m x 24h x 3d)
要在PHP中执行此操作,请将此行添加到输出中:
header('Cache-Control: max-age=259200');
请阅读此处以获取有关标题功能的更多信息:
答案 1 :(得分:11)
有多种方法可以做到这一点 - 但您需要准确考虑缓存所需的内容以及不需要缓存的内容。最大的速度提升可能来自确保您的资产(css,图像,javascript)被缓存,而不是html本身。然后,您需要查看各种因素(这些资产多久更改一次,您将如何强制用户下载您更改文件的新版本文件?)。
通常作为网站发布流程的一部分,新文件(更新文件)会被赋予新文件名以强制用户浏览器重新下载文件,但这只是一种方法。
您应该查看apache mod_expire,以及使用.htaccess文件设置资产到期时间的功能。
http://www.google.com/?q=apache+cache+control+htaccess#q=apache+cache+control+htaccess
答案 2 :(得分:1)
如上所述,Expires和Cache-Control Headers通常是整合信息生命周期信息的最佳方式。
因为客户在解释这些信息代理方面不是非常可靠,所以具有缓存功能,如squid,清漆或此类解决方案是大多数人的首选。您还需要考虑是否只想缓存静态内容(如图像,样式表,...)或动态生成的内容。
答案 3 :(得分:0)
根据YSlow recommendations,您可以将Web服务器配置为向响应添加Expires
或Cache-Control
HTTP标头,这将导致用户代理在指定的持续时间内缓存响应