设为首页 收藏本站
查看: 1255|回复: 0

[经验分享] apache之gzip模块或deflate模块的配置信息

[复制链接]

尚未签到

发表于 2015-12-23 14:25:20 | 显示全部楼层 |阅读模式
在Apache的配置文件中找到下面行,将注释#去掉,重启。



[php] view plaincopy

  • LoadModule deflate_module modules/mod_deflate.so
  • LoadModule expires_module modules/mod_expires.so
  • LoadModule header_module modules/mod_header.so
在http.conf后面加上这一段进行定制:(如非必要,用默认的就好了)




[php] view plaincopy

  •   
  • AddOutputFilterByType DEFLATE text/html text/plain text/css application/x-httpd-php text/javascript application/x-javascript text/css  
  • AddOutputFilter DEFLATE js css         #压缩js,css文件  
  • # Don't compress images                                           #对照片文件不进行压缩处理  
  • SetEnvIfNoCase Request_URI (?:gif|jpe?g|png)$ no-gzip dont-vary  
  • SetEnvIfNoCase Request_URI (?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary  
  • SetEnvIfNoCase Request_URI .pdf$ no-gzip dont-vary  
  • #SetEnvIfNoCase Request_URI .(css|js)$ no-gzip dont-vary  
  • # Make sure proxies don't deliver the wrong content  
  • Header append Vary User-Agent env=!dont-vary  
  • DeflateCompressionLevel 6  
  • SetOutputFilter DEFLATE  
  •   
  •   
  • ExpiresActive On  
  • ExpiresByType text/css "now plus 1 month"  
  • ExpiresByType application/x-javascript "now plus 5 day"  
  • ExpiresByType image/jpeg "access plus 1 month"  
  • ExpiresByType image/gif "access plus 1 month"  
  • ExpiresByType image/bmp "access plus 1 month"  
  • ExpiresByType image/x-icon "access plus 1 month"  
  • ExpiresByType image/png "access plus 1 month"  
  • ExpiresByType application/x-shockwave-flash "access plus 1 month"  
  •   




[php] view plaincopy

  • #使用mod_headers  
  • #在.htaccess文件中添加如下内容可以实现缓存:  
  •   
  • # htm,html,txt类的文件缓存一个小时  
  •   
  • header set cache-control "max-age=3600"  
  •   
  • # css, js, swf类的文件缓存一个星期  
  •   
  • header set cache-control "max-age=604800"  
  •   
  • # jpg,gif,jpeg,png,ico,flv,pdf等文件缓存一年  
  •   
  • header set cache-control "max-age=29030400"  
  •   
  •   


这样可以压缩一般网页中会用到的html、xml、php、css、js等格式档案输出,虽然会占用掉服务器处理器的一点点处理器时间,浏览者在接收 网页数据时也会消耗极短暂的一点点处理器时间,不过却可以大幅减少数据传输量,减少网络带宽被吃掉的情形。
DeflateCompressionLevel 9是指压缩程度的等级,从1到9,9是最高等级。据了解,这样做最高可以减少8成大小的传输量(看档案内容而定),最少也能够节省一半。
DeflateCompressionLevel 预设可以采用 6 这个数值,以维持耗用处理器效能与网页压缩质量的平衡。
Apache 手册 节选 ExpiresDefault 和ExpiresByType 指令同样能够用易懂的语法格式进行定义:

  ExpiresDefault " [plus] { }*"
ExpiresByType type/encoding " [plus] { }*"
其中是下列之一:

  • access
  • now (等价于'access ')
  • modification
plus 关键字是可选的。必须是整数[可以被atoi() 接受的],是下列之一:

  • years
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds
例如,下列3个指令都表示文档默认的有效期是一个月:

  ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
有效期可以通过增加" "子句进一步调整:

  ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"
注意,如果你使用基于最后修改日期的设置,"Expires:"头将不会 被添加到那些并非来自于磁盘文件的内容。这是因为这些内容并不存在"最后修改时间"的属性。

apache之gzip模块或deflate模块的配置信息

检查apache是否有mod_deflate.so和mod_headers.so模块

SetOutputFilter DEFLATE
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript application/x-httpd-php
#BrowserMatch ^Mozilla/4 gzip-only-text/html
#BrowserMatch ^Mozilla/4\.0[678] no-gzip
#BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
#Explicit exclusion of files.
SetEnvIfNoCase Request_URI \.(?:gif|jpg|cab|jpe?g|exe|bmp|mp3|rar|zip|swf|png)$no-gzip dont-vary
#Cache server support.
#Header append Vary User-Agent env=!dont-vary logs.
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat ' "%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate



    AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript application/x-httpd-php
    DeflateCompressionLevel 9
    SetOutputFilter DEFLATE
    #DeflateFilterNote Input instream   
    #DeflateFilterNote Output outstream   
    #DeflateFilterNote Ratio ratio   
    #LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate  
    #CustomLog logs/deflate_log.log deflate   

mod_expires模块添加是启用对有效期控制,也可以加里面,有效控制带宽成本
gzip功能能在消耗一点点CPU使用率的情况下,大幅减少网页在传输过程中的带宽(大约60%-75%)。
mod_expires,就是通过延长页面组件的有效期来加速网页的加载。

关于此两者的具体配置如下:mod_expires
首先在httpd.conf中开启这个模块  
LoadModule expires_module modules/mod_expires.so

然后添加配置项目

# 启用有效期控制
ExpiresActive On
# GIF有效期为1个月(秒数)
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/plain A604800
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800

"M"表示源文件的最后修改时刻,"A"表示客户端对源文件的访问时刻。后面的时间则以秒计算。

gzip(mod_deflate)
--> 正确区分mod_deflate和mod_gzip
所谓gzip,其实在早期的apache 1.x系列版本中没有内建网页压缩技术,所以才需要去gzip压缩,apache2官方在开发的时候,就已经把网页压缩考虑进去,内建了mod_deflate模块,所以apache2就不需要使用到mod_gzip了,这两者的工作原理是类似的,还有启用mod_deflate这个网页压缩的模块,功能和效率和mod_gzip是差不多的,甚至还好一些,就不需要再用mod_gzip模块了。

首先在httpd.conf中开启这个模块
LoadModule deflate_module modules/mod_deflate.so

然后添加配置项目

# 压缩级别
DeflateCompressionLevel 9
# 压缩类型
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
# 启用日志记录
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
#CustomLog logs/deflate_log.log deflate


这样可以压缩一般网页中会用到的html、xml、php、css、js等格式档案输出,虽然会占用掉服务器处理器的一点点处理器时间,浏览者在接收 网页数据时也会消耗极短暂的一点点处理器时间,不过却可以大幅减少数据传输量,减少网络带宽被吃掉的情形。
DeflateCompressionLevel 9是指压缩程度的等级,从1到9,9是最高等级。据了解,这样做最高可以减少8成大小的传输量(看档案内容而定),最少也能够节省一半。
DeflateCompressionLevel 预设可以采用 6 这个数值,以维持耗用处理器效能与网页压缩质量的平衡。

补充
至于已经是压缩过的图片格式如jpg,音乐档案如mp3、压缩文件如zip之类的,就没必要再压缩了,因为这种档案你一开放服务器传输时压缩,处理器时间会跑不完,而且就算你跑完,大小也一样,如果使用PHP函数之类压缩过的文件,httpd服务是不会再次压缩的,系统级别的处理,总会比应用级别的效率高吧。

Apache 的 mod_deflate 和 gzip compression 的对比.

* 不使用任何压缩: 430KB
* 仅使用 gzip: 323KB
* 仅使用 Apache 的 deflate 模块: 247KB
* 同时使用 deflate 以及 gzip: 247KB

至於时间的部份, 差异倒不是很大, 大约都是在 10-20 秒左右

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-155311-1-1.html 上篇帖子: apache-2.4.12基于域名访问的多虚拟主机配置 下篇帖子: sed 取某时段内apache的访问日志
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表