我正在寻找一些示例代码,以帮助我开始尝试使用 Apache、.htacces 或 httpd.conf 进行缓存控制。
谁能给我一些我可以复制粘贴的代码?(然后开始自己调整)
假设我想
缓存 js、css、图片 30 天
不缓存我的 html,因为它每隔几分钟就会更新一次,所以
not cache anything ending in .php, .html or '/'
我不想让这看起来像是我在要求别人为我做这件事——我只是在寻找一些可以开始摆弄的代码!
答案1
正如 Konerak 所说,您可以使用 mod_expires,要在 shell 中启用它,请执行以下操作:
# for ubuntu
sudo a2enmod expires
sudo service apache2 restart
# or, for other distros as root:
a2enmod expires
/etc/init.d/apache2 restart
/etc/init.d/httpd restart
这是一个肯定能满足您需求的 vhost 配置:
<VirtualHost *:80>
[...]
ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/x-icon "access plus 30 days"
ExpiresByType image/ico "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/javascript "access plus 30 days"
ExpiresByType application/x-javascript "access plus 30 days"
ExpiresByType text/javascript "access plus 30 days"
[...]
</VirtualHost>
其余所有内容都不应被缓存。
该脚本摘自我的网站配置,网址为http://www.codealpha.net/您可以看到它仅缓存图像。(未启用 Javascript 缓存。)
答案2
使用来自 Apache 的 mod_expires。您应该研究一下 ExpiresByType。
答案3
到期日期
# expire All after a month in the client's cache
ExpiresDefault A2592000
# HTML documents are good for a week from the time they were changed
ExpiresByType text/html M604800
ExpiresByType application/javascript M604800
ExpiresByType text/javascript M604800
ExpiresByType text/css M604800
# Don't cache
<FilesMatch "\.(php)$">
ExpiresActive Off
</FilesMatch>