Apachecaching和过期configuration

我正在寻找一个最佳的caching/到期configuration为我的具体情况。

我意识到有些网站主张closuresetags:标题未设置ETag,FileETag无

我知道我应该使用Expires或Cache-Control。 此外,我知道我应该使用最后修改或ETAG(每ySlow文档)。

我inheritance了在.htaccess中使用以下内容的客户端服务器:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|xml|txt|html|htm)$"> Header set Cache-Control "max-age=172800, public, must-revalidate" </FilesMatch> 

有了这个服务器,我不能依靠工作人员重新命名图像,CSS和JS在Web应用程序,所以我不想在未来设置到期远期不知道(有一个很好的把握),“最/所有浏览器将检查内容是否已经改变。 我不想发生的事情是有人打电话给我,说网站是坏的,因为他们取代了一个图像,它没有显示出来。

但是我确实希望充分利用caching和过期的优势,同时仍然保持大多数浏览器都会检查服务器以查看组件是否已经更改。

我有权访问.htaccess和apache .conf文件,并且它是单个服务器,内容不在多个服务器上部署。

什么是最好的.htaccess或.confconfiguration为我达到这个客户端服务器的目标?

谢谢你的帮助

您应该启用电子标签,尽pipe有些人在使用负载平衡器时build议不要这样做。

为了过期和削减yoru内容,您可以使用mod_expires并configuration哪些资源及其年龄。 或者你可以设置这个httpd.conf

标题集caching控制“max-age = 63072000,public”

现在,当你看到你的响应标题时,你会看到一个年龄的caching控制。 我已经设定了2年

 > Cache-Control:max-age=63072000, public Connection:close Date:Thu, 22 > Oct 2015 17:09:31 GMT ETag:"2b7e6-a9777-523307081ff00" > Server:Apache/2.2.3 Vary:Accept-Encoding,User-Agent 

基本上,请确保服务器发送EtagLast-Modified标题(允许客户端检查资源是否已经更改,而不需要实际下载),并设置ExpiresCache-Control: max-age标题能够。 如果静态内容将被改变而不被重命名,那么你可以做的最好的事情就是将其设置为覆盖典型的浏览会话(例如15分钟)。