阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache开启 gzip 压缩与配置 Expire/Cache-Control 头

114次阅读
没有评论

共计 2059 个字符,预计需要花费 6 分钟才能阅读完成。

Apache 开启 gzip 压缩方法:

这里我使用的是 Apache2.4.17

打开 apache 安装目录,找到 conf 目录,用记事本打开 httpd.conf 文件。

ctrl+f 查找

去掉 #LoadModule headers_module modules/mod_headers.so 前面的注释 #
去掉 #LoadModule deflate_module modules/mod_deflate.so 前面的注释 #
去掉 #LoadModule filter_module modules/mod_filter.so 前面的注释 #

文件末尾加上

<IfModule deflate_module>
  SetOutputFilter DEFLATE
 
  DeflateCompressionLevel 6
 
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript // 需要压缩的格式
   
AddOutputFilter DEFLATE css js txt xml rss html htm // 需要压缩的格式
   
Header append Vary User-Agent env=!dont-vary
   
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|bmp|tif)$ no-gzip dont-vary // 不需要压缩的格式
   
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|7z|bz2|sit|rar|bin|iso)$ no-gzip dont-vary // 不需要压缩的格式
   
SetEnvIfNoCase Request_URI .(?:pdf|doc|docx|xls|xlsx|ppt|pptx)$ no-gzip dont-vary // 不需要压缩的格式
   
 </IfModule>

然后看客户端的请求里是否有 :

Accept-Encoding: gzip, deflate // 代表客户端支持 gzip

服务端的响应里是否有 :

Content-Encoding: gzip // 代表服务端已开启 gzip


有些服务器对内容进行 gzip 编码只针对某些文件, 所以 有没有返回 这个, 并不能代表, 是否支持 gzip 的依据。

Apache 配置 Expire/Cache-Control 头

打开 apache 安装目录,找到 conf 目录,用记事本打开 httpd.conf 文件。

ctrl+f 查找 LoadModule expires_module modules/mod_expires.so
去掉前面 #号!

在文本最后面添加:
<IfModule expires_module>
   
    #打开缓存
    ExpiresActive on
    #css 文件缓存 7200000/3600/24=83 天
    ExpiresByType text/css A7200000

    #js 文件缓存 83 天
    ExpiresByType application/x-javascript A7200000
    ExpiresByType application/javascript A7200000

    #html 文件缓存 83 天
    ExpiresByType text/html A7200000

    #图片文件缓存 83 天
    ExpiresByType image/jpeg A7200000
    ExpiresByType image/gif A7200000
    ExpiresByType image/png A7200000
    ExpiresByType image/x-icon A7200000
   
  </IfModule>

上面开启的是 expire

下面是 cache-control
在文本后面继续添加
<FilesMatch “\.(flv|gif|jpg|jpeg|png|ico|swf)$”>
  Header set Cache-Control “max-age=604800, public”
</FilesMatch>

<FilesMatch “\.(css|js)$”>
Header set Cache-Control “max-age=604800, public”
</FilesMatch>

这里时间设置不一样是为了检验是否成功配置的,因为,没设 cache-control 的时候,它会自动根据 expire 的时间设置自己。

最后重启 apache 服务器,ok!

这里说一个自己爬的坑吧!(那就是如果不出现 200 form cache,而是出现了 304,那是因为,你刷新了浏览器。。。想要出现 200 form cache,需要在浏览器地址栏里按回车键。)

也就是说:刷新浏览器 触发 304,地址栏回车触发 200 form cache。

查了好久才发现了,之前一直想不通,既然设置了 cache-control 和 expire 为啥还是 304,这就是原因,就是这么简单。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2059字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中