用Apache2的mod_deflate模块来压缩页面

  mod_deflate在Web服务器层进行压缩控制,因此不需要通过修改程序代码就可以达到减小传输文件大小的功能。但是对于特别大的文件,在压缩的时候需要花费一定的时间,因此下载的人会在一段时间内无法得到响应。

查看了Apache的配置:

Apache配置代码:

<ifmodule mod_deflate.so>
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
</ifmodule>

修改为:

Apache配置代码:

<IfModule mod_deflate.so>
DeflateCompressionLevel 6
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
#CustomLog logs/deflate_log.log deflate
</ifmodule>

Apache2中的实时压缩解压的模块编译在mod_deflate模块中,替换了原来的mod_gzip模块。

编译apache的时候 –enable-deflate 这个参数是默认开启的,编译完会有mod_deflate模块。

配置站点:

如果我们想使一个文件传输的时候进行加密,我们在站点配置文件里增加这样的配置

<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</Location>
这样,/var/www/htdocs目录下的所有mime类型为text/html的文件就可以启用

未压缩的http头:

Date Fri, 21 Oct 2011 05:43:36 GMT
Server Apache/2.2.16 (Unix) DAV/2
Last-Modified Fri, 21 Oct 2011 05:42:23 GMT
Etag "48d46c6-12853-4afc8898ecdc0"
Accept-Ranges bytes
Content-Length 75859
Content-Type text/html
Vary Accept-Encoding,User-Agent

压缩后的http头:

Date Fri, 21 Oct 2011 05:43:36 GMT
Server Apache/2.2.16 (Unix) DAV/2
Last-Modified Fri, 21 Oct 2011 05:42:23 GMT
Etag "48d46c6-12853-4afc8898ecdc0"
Accept-Ranges bytes
Vary Accept-Encoding,User-Agent
Content-Encoding gzip
Content-Length 18323
X-UA-Compatible IE=EmulateIE7
Content-Type text/html

原来length为75859,压缩后为18323,效果还是很明显的。

不过对于length很小的文件,是不进行压缩的。

本文出自 “玩linux…做运维…集群” 博客,请务必保留此出处http://scottlinn.blog.51cto.com/829656/694046

更多相关文章
一周排行
  • group by 优化 加order by null mysql> explain select uid,sum(times) from tbl_name group by uid\G; *********** ...
  • Throughout this Handbook we will be investing certain terms with specific meanings. 在这本手册整个我们会定下某些条款具有特定的含义.
  • struts2使用iterator標簽顯示嵌套Map
    <[email protected]="s" uri=" ...
  • 使用Hashtable没有任何优点,因为在.net2.0以后已经被Dictionary<Tkey,TValue>所代替.他们两者的区别是,根据stackoverflow Dictionary relies ...
  • Q: 新增记录插入成功后,加了一个return $this->db->insert_id(); $digg_id = $this->m_feed_digg->create(json_decod ...
  • 安装官方有很详细的文档 转自 http://www.enjoyphp.com/2010/eaccelerator-manual/ 配置选项 eaccelerator.shm_size指定 eAccelerator 能 ...
  • xml-rpc是个基于xml的协议,用于执行远程调用,根本上说,是在远程计算机上调用函数和方法的过程.xml-rpc规范定义了在一台服务器上用于调用一个方法的简单结构,此服务器带有一个或者多个给定类型的参数 简而言之
  • 对于一个UI界面中,当判断用户是否输入用户名或密码时,我们常用TextUtils.isEmpty()方法来判断:但有时也可以用这个equals()方法,都可以来判断EditText中是否为空,但有时很纠结,不知道这两
  • 1. 概述 在引入范型之前,Java类型分为原始类型.复杂类型,其中复杂类型分为数组和类.引入范型后,一个复杂类型就可以在细分成更多的类型.例如原先的类型List,现在在细分成List<Object>, ...
  • 今天在调试Evernote SDK时, 遇到PythonPath的问题. 查了很多资料,有说用系统环境变量添加PythonPath, 有说在注册表中的PythonPath添加新Default字段, 但是对于我来说都没