135956557-小三IT自学群,任何IT问题都可以一起讨论,各种服务网络等等
-------------------------------------------------------------------------------
gzip可以加速网站,压缩比率可以80%-40%,Apache2之后的版本叫mod_deflate
没有压缩
启用了压缩
使用deflate的话需要开启两个模块
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
压缩比率可以设置1-9 建议不要太高否则会占用过多CPU
使用DOS方式安装没有的模块
apxs -c -i -a /gao/httpd-2.4.23/modules/metadata/mod_headers.c
i 执行安装
a 自动增加一个loadmodule到httpd.conf中以此使用模块
c执行编译操作
配置项,直接写在http中最下就可以
<IfModule mod_deflate.c>
DeflateCompressionLevel 9 # 压缩程度的等级,预设可以采用 6 这个数值,以维持耗用处理器效能与网页压缩质量的平衡。
SetOutputFilter DEFLATE #设置输出过滤器,对输出启用压缩,必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩
#AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
#AddOutputFilterByType DEFLATE p_w_picpath/*
AddOutputFilterByType DEFLATE text/* #设置对文件是文本的内容进行压缩,例如text/html text/css text/plain等.
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #对javascript文件进行压缩
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #对php类型的文件进行压缩.
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩。注:?:表示不会捕获 ( )里内容了
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上,就是设置不对exe,tgz,gz等的文件进行压缩
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary #同上就是设置不对pdf,avi,mp3等的文件进行压缩
</IfModule>
#设置日志输出!
DeflateFilterNote Input input_info
#声明输入流的byte数量
DeflateFilterNote Output output_info
#声明输出流的byte数量
DeflateFilterNote Ratio ratio_info
#声明压缩的百分比
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
#声明日志格式
CustomLog logs/deflate_log.log deflate
---------------------------------------------------------------------
配置mod_expires模块
这个非常有用的优化,可以减少很多重复请求,让用户将请求结果cache在本地,不向服务器发出请求,但是注意更新快的文件不要cache
模块控制服务器应答的expires头内容和cache-control头的max-age指令,有效期可以设置为相对于源文件的最后修改或者客户端的访问时刻.
启用expire缓存模块
LoadModule expires_module modules/mod_expires.so
添加expires.c规则
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "now plus 1 month"
ExpiresByType application/x-javascript "now plus 5 day"
ExpiresByType p_w_picpath/jpeg "access plus 1 month"
ExpiresByType p_w_picpath/gif "access plus 1 month"
ExpiresByType p_w_picpath/bmp "access plus 1 month"
ExpiresByType p_w_picpath/x-icon "access plus 1 month"
ExpiresByType p_w_picpath/png "access plus 1 minutes"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresDefault "now plus 0 minutes"
</IfModule>
ExpiresDefault 和ExpiresByType 指令同样能够用易懂的语法格式进行定义:
ExpiresDefault "<base> [plus] {<num> <type>}"
ExpiresByType type/encoding "<base> [plus] {<num> <type>}"
其中<base>是下列之一:
· access
· now (等价于'access ')
· modification
plus 关键字是可选的。<num>必须是整数,<type>是下列之一:
· years
· months
· weeks
· days
· hours
· minutes
· seconds
例如,下列3个指令都表示文档默认的有效期是一个月:
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
有效期可以通过增加"<num> <type>"子句进一步调整:
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType p_w_picpath/gif "modification plus 5 hours 3 minutes"
注意,如果你使用基于最后修改日期的设置,"Expires:"头将不会 被添加到那些并非来自于磁盘文件的内容。这是因为这些内容并不存在"最后修改时间"的属性。
# GIF有效期为1个月(秒数)
ExpiresByType p_w_picpath/gif A2592000
ExpiresByType p_w_picpath/jpeg A2592000
ExpiresByType p_w_picpath/png A2592000
ExpiresByType p_w_picpath/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/plain A604800
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
</IfModule>
"M"表示源文件的最后修改时刻,"A"表示客户端对源文件的访问时刻。后面的时间则以秒计算。
有关 Apache Expires Module 的介绍,可以参阅其官方文档:
http://httpd.apache.org/docs/2.4/mod/mod_expires.html