Bri*_*ity 10 apache cache-control mod-expires
我有一些内容永远不会改变的目录.
是否可以创建.htaccess文件,告诉浏览器该目录和子目录中的任何内容都可以缓存很长时间?
如果可能的话,我想在每个目录中复制相同的.htaccess文件.
如果这是可能的,你会建议max-age超过期限或两者兼而有之吗?
Bri*_*ity 20
所以看起来确实可行...... .htaccess文件语法是:
Header unset Last-Modified
FileETag none
ExpiresActive On
ExpiresDefault "access plus 1 years"
Run Code Online (Sandbox Code Playgroud)
这将关闭Etags并启用缓存控制:max-age
然后将此.htaccess文件放在目录中,所有文件(包括它的子目录将被缓存1年.
我决定将所有可缓存内容放在一个根目录下并编辑httpd.confas
<Directory "C:\somedir\cache">
Header unset Last-Modified
FileETag none
ExpiresActive On
ExpiresDefault "access plus 1 years"
</Directory>
Run Code Online (Sandbox Code Playgroud)
我还在测试这个.我只是希望这不会关闭网站其他部分的Etags.到目前为止看起来它按计划工作.
更新(6个月后):
设置ExpiresDefault并允许使用电子标签是最好的选择.
在httpd.conf中:
<Directory "C:\somedir\cache">
ExpiresActive On
ExpiresDefault "access plus 1 year"
</Directory>
Run Code Online (Sandbox Code Playgroud)
确保"somedir"位于apache根目录内(例如htdocs).
允许使用电子标签是一件好事,因为1年后,浏览器将通过传递电子标签重新验证文件.Web服务器将发回304 - Not Modified并将max-age重置为1年.这非常有效.
总而言之,您可以查看apache日志文件,并查看/ cache目录中的项目是否已开始提供一次.
注意:我发现Header append Cache-Control "public"如果你愿意,可以设置.
最终版本:
这是最终版本:(只需在httd.conf的底部添加)
<Directory "C:\somedir\cache">
ExpiresActive On
ExpiresDefault "access plus 1 year"
Header append Cache-Control "public"
</Directory>
Run Code Online (Sandbox Code Playgroud)
检查标题应该揭示:
Accept-Ranges:bytes
Cache-Control:max-age=31536000, public
Connection:Keep-Alive
Content-Language:en
Content-Length:746
Content-Type:text/css
Date:Thu, 29 May 2014 15:23:50 GMT
ETag:"240000000add63-2ea-4f4086d72ad01"
Expires:Fri, 29 May 2015 15:23:50 GMT
Keep-Alive:timeout=40, max=200
Last-Modified:Fri, 07 Mar 2014 18:28:59 GMT
Run Code Online (Sandbox Code Playgroud)
这将:
| 归档时间: |
|
| 查看次数: |
23778 次 |
| 最近记录: |