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

[经验分享] 利用GZIP压缩网页(Tomcat,apache,iis)各种方法总结

[复制链接]

尚未签到

发表于 2018-11-26 09:42:52 | 显示全部楼层 |阅读模式
  二、Apache 服务器 在 apache 1.3 版本,大家常用 mod_gzip 对输出内容进行压缩,现在主流的浏览器都支持 gzip 解压缩。在 apache2 下,这个模块换名为 mod_deflate,对应的模块文件名是mod_deflate.so下面我们介绍在 Windows 和 Linux 操作系统下如何启用并配置mod_gzip和mod_deflate模块。1、mod_gzip的启用 如果服务器开启了对Gzip组件的支持,那么我们就可以在http.conf或.htaccess里面进行定制,下面是一个.htaccess配置的简单实例:

  • # mod_gzip:

  • mod_gzip_on Yes
  • mod_gzip_dechunk Yes
  • mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  • mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.*
  • mod_gzip_item_include mime ^application/x-javascript.*
  • mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

2、mod_deflate的启用

  • # mod_deflate:

  • DeflateCompressionLevel 6 #压缩率, 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

3、对未开启mod_gzip和mod_deflate模块的虚拟主机的设置(如GoDaddy Deluxe Hosting – Linux)   GoDaddy Deluxe Hosting – Linux 空间不支持mod_gzip、mod_deflate模块,若想通过GZIP压缩网页内容,可以考虑两种方式,开启zlib.output_compression或者通过ob_gzhandler编码的方式。 zlib.output_compression是在对网页内容压缩的同时发送数据至客户端,ob_gzhandler是等待网页内容压缩完毕后才进行发送,相比之下godaddy使用后者效率更高,但需要注意的是,两者不能同时使用,只能选其一,否则将出现错误。   在默认情况下,zlib.output_compression是关闭的,如需开启需编辑php5.ini文件,加入以下内容:

  • zlib.output_compression = On
  • zlib.output_compression_level = 6
  第2个参数的值从1到9,越大代表压缩率越大,一般设为6。Gzip功能会极轻微的加重服务器负担。 对于绑定了多个域名的godaddy主机,只需要设置一次即可,就是主机的总的根目录下的php5.ini。 将php5.ini上传到FTP根目录下,剩下的事请就是等待它生效,这可能需要一段时间,可以通过phpinfo()函数检测结果:

  • Directive Local Value Master Value
  • zlib.output_compression On On
  • zlib.output_compression_level 6 6
当zlib.output_compression的Local Value和MasterValue的值同为On时,表示已经生效,这时候访问的PHP页面(包括伪静态页面)已经GZIP压缩了,通过Firebug或者在线网页GZIP压缩检测工具可检测到压缩的效果。 如果需要使用ob_gzhandler,则需关闭zlib.output_compression,把php5.ini文件内容更改为:

  • zlib.output_compression = Off
  • zlib.output_compression_level = -1
ob_gzhandler是GoDaddy官网推荐的用法,通过在PHP文件中插入相关代码实现GZIP压缩,以下是GoDaddy帮助中心所提到的:
GZIP Compression Smaller pages load faster, regardless of your Internet connection speed. You can make your pages smaller by compressing them with GZIP. For more information about GZIP and our hosting, see Compressing Web Pages for Faster Load Times.
《Compressing Web Pages for Faster Load Times》文中提到,将以下PHP代码加入到PHP文件顶部,即可实现GZIP压缩。
不管是zlib.output_compression还是ob_gzhandler,都仅能对PHP文件进行GZIP压缩,对于HTML、CSS、JS等静态文件只能通过调用PHP的方式实现,可以参照文章《加速blog:GZIP压缩传输你的文件》中的“静态文本调用PHP压缩模块实现GZIP压缩效果”。 最后想说的是,现在主流的浏览器默认使用的是HTTP1.1协议,基本都支持GZIP压缩,对于IE而言,假如你没有选中其菜单栏工具->Internet 选项->高级->HTTP 1.1 设置->使用 HTTP 1.1,那么,你将感受不到网页压缩后的速度提升所带来的快感!经过我的测试,zlib.output_compression和ob_gzhandler这两种方式,godaddy空间使用ob_gzhandler方式,访问速度有明显的提高,前者效率很差。另外,有一种传说中没尝试过的方法。如下:  ps:经测试下面方法中在linux空间起作用给godaddy 开启网页GZIP压缩,速度传输提升50%。godaddy默认是支持Gzip的,修改你的程序即可实现。 Win空间: web.config文件加入代码:
  
Linux空间: .htaccess 加入代码:
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript
三、 IIS 服务器 微软的 IIS 服务器同样也是目前用得最多的 WEB 服务器之一,而且用来运行 ASP 页面也是必不可少的。IIS6 本身支持 gzip 压缩,IIS5 就比较费劲了,你可以找一些第三方的组件来处理,不过这玩意是收费的。接下来我们介绍如何在 IIS6 中启用压缩功能。 打开 Internet 信息服务(IIS)管理器,右击”网站”->”属性”,选择”服务”。在 “HTTP压缩” 框中选中 “压缩应用程序文件” 和 “压缩静态文件”,按需要设置 “临时目录” 和 “临时目录的最大限制”,如下图所示:http://www.iyunv.com/uploadfile/2011/0913/20110913034305470.jpg接下来配置 gzip 组件,在 Internet 信息服务(IIS)管理器,点击 “Web 服务扩展”->”增加一个新的 Web 服务扩展…”,在 “新建 Web 服务扩展” 框中输入扩展名 “HTTP Compression”,添加 “要求的文件” 为 C:\WINDOWS\system32\inetsrv\gzip.dll,选中 “设置扩展状态为允许”,如下图所示:http://www.iyunv.com/uploadfile/2011/0913/20110913034306372.jpg http://www.iyunv.com/uploadfile/2011/0913/20110913034308145.jpg 还没完呢,我们还需要修改一个配置文件,修改之前请先停止 IIS 服务,打开 C:\Windows\System32\inetsrv\MetaBase.xml,这个文件很大,找到下面一段信息:


    增加一些要进行压缩的文件后缀,其中 HcFileExtensions 是静态文件的扩展名,增加 js 和 css 等;HcScriptFileExtensions 为动态文件的扩展名,增加 aspx,保存后启动 IIS 即可生效。 最后我们介绍如何来测试前面所做的工作是否起效,你可能会觉得很奇怪,配置好了,用浏览器打开页面正常,查看页面源码,内容并没有变化,大小也跟原来一样,怎么回事呢?这是因为浏览器已经把内容解压了的结果,有两个方法来判断压缩是否生效:第一,查看 WEB 服务器的日志,不管是 Apache 或者是 IIS,二者的访问日志格式都差不多是下面这种格式:127.0.0.1 - - [14/May/2006:08:44:28 +0800] "GET /manual/style/css/manual.css HTTP/1.1" 200 19351 最后两个数字分别是 HTTP 的结果码(200 表示 OK),19351 表示的是响应内容的大小,把这个大小跟你在浏览器上查看源码的大小比较一下就可以知道是否生效。另外一种方法就是自己写一个 HTTP 客户端的小程序并设置 Accept-Encoding 的值为 gzip,deflate,由这个程序去请求服务器端的某个 URL 地址,然后打印出响应的内容,如果是一堆乱码,恭喜你,配置成功。下面是一段 Java 写的测试客户端代码(需要用到 commons-httpclient 包):
HttpClient http = new HttpClient(); String url = "http://www.dlog.cn/javayou"; GetMethod get = new GetMethod(url); try{ System.out.println("fetching url : "+ url); get.addRequestHeader("accept-encoding", "gzip,deflate"); int er = http.executeMethod(get); if(er==200){ System.out.println(get.getResponseContentLength()); String html = get.getResponseBodyAsString(); System.out.println(html); System.out.println(html.getBytes().length); } }finally{ get.releaseConnection(); }
利用GZIP压缩网页(Tomcat,apache,iis)各种方法总结 参考来自http://www.huacolor.com/ http://www.iyunv.com/等

运维网声明 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-639693-1-1.html 上篇帖子: apache启动端口被占用 下篇帖子: Apache HTTP服务器和支持程序 —— apachectl
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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