我们目前没有使用Expire头文件,但是我会推荐它,但是迫使我们的大型开发团队/业务改变他们的做法并且重新命名静态文件,每个新版本都不容易获得更新的文件。
我运行了YSlow,我们得到了一个Etags的F,“有24个组件错误configurationETags”。 Apache httpd.conf没有手动configurationEtags,所以看起来我们使用的是默认设置。 (FileETag INode MTime大小)。 当我访问我们的网站,然后刷新我可以看到Etags似乎工作得很好:
一个镜像示例:If-Modified-Since:星期六,23七月2011 02:05:28 GMT If-None-Match:“21246-eb05-4a8b30415ea00”Cache-Control:max-age = 0
HTTP / 1.1 304 Not Modifieddate:2011年9月6日(星期二)20:59:29 GMT服务器:IBM_HTTP_Server连接:Keep-Alive Keep-Alive:timeout = 6电子标签:“21246-eb05-4a8b30415ea00”
1)我看到一个“304未修改”的图像文件,js,html等在我们的着陆页上。 为什么Yslow说我们有一些configuration错误的Etags,当他们都configuration了相同的默认Apacheconfiguration? YSlow报告提到这些相同的文件types..
2)我们在多个Apache Web服务器之间有一个F5负载平衡器,我们使用粘性位,这就是为什么我认为Apache inode Etag不会太困扰我们。 但是,如果用户明天回来,并击中另一个networking服务器,我们将失去正确的caching选项,因为他们的indode会不同? 我们是否应该更改httpd.conf并从所有Web服务器中删除Etag inodevariables?
对不起,长度! 谢谢
1)也许消息是不是关于静态文件,但其他交付内容没有ETags(例如PHP页面,CGI输出等)?
2)是的,您应该从标签中删除inode,并确保文件在所有后端具有相同的时间戳。
C. Ramseyer是正确的。 这是我用来保持YSlow相当满意的configuration:
<Directory /path/to/files> FileETag MTime Size ExpiresActive On ExpiresDefault "access plus 1 week" ExpiresByType text/html "access plus 1 week" ExpiresByType text/css "access plus 1 week" ExpiresByType text/javascript "access plus 1 week" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/png "access plus 1 month" </Directory>
请确定,虽然你可以caching页面一个星期 。 例如,如果您有一个每天更新的博客,则上述设置将使post列表caching1周。 在这种情况下,您可能希望使用ExpiresDefualt "access"