针对windows版本的apache2.2,开启方法如下:
第一步:
找到apache的配置文件httpd.conf,找到下面两行,将前面的 # 去掉.
- LoadModule deflate_module modules/mod_deflate.so
- LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
重启apache服务器.
第二步:
打开网站的 .htaccess 文件,将下面代码拷贝进去:
- <IfModule mod_expires.c>
- ExpiresActive On
- ExpiresDefault "access plus 12 month"
- ExpiresByType text/html "access plus 12 months"
- ExpiresByType text/css "access plus 12 months"
- ExpiresByType image/gif "access plus 12 months"
- ExpiresByType image/jpeg "access plus 12 months"
- ExpiresByType image/jpg "access plus 12 months"
- ExpiresByType image/png "access plus 12 months"
- EXpiresByType application/x-shockwave-flash "access plus 12 months"
- EXpiresByType application/x-javascript "access plus 12 months"
- ExpiresByType video/x-flv "access plus 12 months"
- </IfModule>
- <IfModule mod_deflate.c>
- SetOutputFilter DEFLATE
- AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript
- </IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 12 month"
ExpiresByType text/html "access plus 12 months"
ExpiresByType text/css "access plus 12 months"
ExpiresByType image/gif "access plus 12 months"
ExpiresByType image/jpeg "access plus 12 months"
ExpiresByType image/jpg "access plus 12 months"
ExpiresByType image/png "access plus 12 months"
EXpiresByType application/x-shockwave-flash "access plus 12 months"
EXpiresByType application/x-javascript "access plus 12 months"
ExpiresByType video/x-flv "access plus 12 months"
</IfModule>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript
</IfModule>
代码没错,测试通过了的,大家可以放心使用.
解释一下。ExpiresByType 是通过MIME类型来设置具体文件的缓存时间,A表示访问,A后面的数字表示访问后的缓存时间。AddOutputFilterByType表示根据后面的MIME类型来压缩文件,这里对css,html,gif,jpeg,png,JavaScript等进行gzip压缩。更多选项请参考apache手册哦。
关闭ETag。Etag的问题在于,它是根据可以辨别网站所在的服务器的具有唯一性的属性来生成的。当浏览器从一台服务器上获得页面内容后到另外一台服务器上进行验证时ETag就会不匹配,这种情况对于使用服务器组和处理请求的网站来说是非常常见的。在配置文件中写入下面一行即可:
FileETag none
如果是多服务器负载均衡,可以设置为FileETag MTime Size,apache默认设置为FileETag INode MTime Size,去掉INode。
效果如下:
网址 http://www.k686.com/ 检测结果如下:
是否压缩 是
压缩类型 gzip
原始文件大小 91844 字节
压缩后文件大小 15365 字节
压缩率(估计值) 83.27%
Header信息
Date Thu, 03 Jun 2010 09:00:14 GMT
Server Apache/2.2.11 (Win32) PHP/5.2.10
X-Powered-By PHP/5.2.10
Set-Cookie PHPSESSID=nkcqphhqt8005prgnn35fdfif4; path=/
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control private
Pragma no-cache
Vary Accept-Encoding
Content-Encoding gzip
Content-Length 15365
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html; charset=utf-8