突然间发现自己用 VPS 搭的网站都没有开启 gzip 压缩,于是上网搜了 Apache 开启 gzip 压缩的方法,这里做一个总结。
教程在网上一搜一大把,这里没有原理,没有说明,只有最终的解决方案( ̄▽ ̄)
(^・ω・^ )卖个萌
Q:如何判断浏览器支持哪种压缩模块?
A:在发送(Request)的 HTTP 头里找到 Accept-Encoding
,gzip 和 deflate 对应支持 mod_gzip
和 mod_deflate
模块。
Q:如何判断一个页面或文件使用了 gzip 压缩?
A:在请求(Response)的 HTTP 头里找到 Content-Encoding
,若有 gzip 或 deflate 则表示使用了 gzip 压缩,反之没开启。
Q:如何开启 Apache 的 gzip 压缩?
A:第一步,启用 mod_deflate
和 mod_headers
模块
sed -i 's@^#LoadModule\(.*\)mod_deflate.so@LoadModule\1mod_deflate.so@' /usr/local/apache/conf/httpd.conf sed -i 's@^#LoadModule\(.*\)mod_headers.so@LoadModule\1mod_headers.so@' /usr/local/apache/conf/httpd.conf
Apache 安装方法及路径见之前的博文《编译安装LAMP:Apache篇》。
第二步,添加压缩规则
PS:博主水平有限,本来想用 sed a 来实现一句话写入,但是试了很多方法都失败了,只好多一个步骤
sed -i '0,/^<\/IfModule>/{/^<\/IfModule>/a\ PUTIN_TMP }' /usr/local/apache/conf/httpd.conf #在第一个</IfModule>下面添加标记 sed -i 's@^PUTIN_TMP@\n<IfModule mod_deflate.c>\ SetOutputFilter DEFLATE\ SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|webp)$ no-gzip dont-vary\ SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar|7z|xz)$ no-gzip dont-vary\ SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary\ AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml text/javascript\ AddOutputFilterByType DEFLATE application/x-httpd-php application/x-javascript application/javascript\ </IfModule>@' /usr/local/apache/conf/httpd.conf #说明: #SetOutputFilter DEFLATE告诉Apache要对页面进行压缩 #第一个SetEnvIfNoCase表示不压缩图片 #第二个SetEnvIfNoCase表示不压缩文件 #第三个SetEnvIfNoCase表示不压缩视频 /etc/init.d/httpd restart #重新启动Apache服务
说白了就是在 httpd.conf
中添加以下代码,重新启动 Apache 就行了:
<IfModule mod_deflate.c> SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|webp)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar|7z|xz)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml text/javascript AddOutputFilterByType DEFLATE application/x-httpd-php application/x-javascript application/javascript </IfModule>
Q:哪里可以检测一个页面或文件是否使用了 gzip 压缩?
A:站长之家可以检测,传送门。
原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-886.html