首页  编辑  

Apache增加Cache控制

Tags: /计算机文档/Linux & Unix/   Date Created:
Apache可以对网站进行Cache控制,从而提高性能,尤其某些情况下反向代理了某个网站,而这个网站没有Cache控制又无法修改,可以用Apache这个中间层来实现。
例如 InnoKB 对 /js/*, /images/*, /html/*, /css/* 下的文件是没做Cache控制,而这些目录下的文件又是不会改变的,完全可以用缓存来提高性能。
启用mod_headers模块
首先运行 apache2ctl -M | grep headers 检查是否启用了mod_headers模块,如果启用,则上述命令会输出:
headers_module (shared)
否则你需要修改 Apache的配置文件 httpd.conf或者Apache2.conf或虚拟主机配置中增加下面的行:
LoadModule headers_module modules/mod_headers.so
修改完成后,重启Apache: sudo service apache2 restart 或者  sudo systemctl restart apache2
增加Cache-Control控制
修改对应的主机控制,增加 Cache-Control 设置。
<VirtualHost *:443>
        ServerName www.abc.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/

        ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /path/fullchain.pem
        SSLCertificateKeyFile /path/privkey.pem

	# FilesMatch 在 ProxyPass 下不生效,需要用 LocationMatch 才能正确匹配
	# 下面对 图片文件,.js 和 .css 文件增加缓存控制
        <FilesMatch "\.(jpg|jpeg|png|bmp|gif|js|css)$">
		Header set Cache-Control "max-age=86400, public"
	</FilesMatch>

	# 下面对 图片文件,.js 和 .css 文件增加缓存控制,支持 ProxyPass
	<LocationMatch "\.(jpg|jpeg|png|bmp|gif|js|css)$">
		Header set Cache-Control "max-age=86400, public"
	</LocationMatch>

	# 下面对 /images/* 下所有文件增加 Cache 控制,下同
	# 可根据实际情况修改,也可以分别设定不同的缓存策略
	<Location "/images/">
		Header set Cache-Control "max-age=86400, public"
	</Location>

	<Location "/js/">
		Header set Cache-Control "max-age=86400, public"
	</Location>

	<Location "/css/">
		Header set Cache-Control "max-age=86400, public"
	</Location>

	<Location "/html/">
		Header set Cache-Control "max-age=86400, public"
	</Location>
</VirtualHost>
修改完成后,记得重启 Apache 服务器。