热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

你的php网站开启gzip压缩了吗?

Gzip网页压缩可以大幅度提升网站访问速度,对于网站在国外的站来说,这是必不可少的一步,提升网页打开速度非常明显,现在我们就系统的来认识一下这个Gzip的庐山真面目。一、何为GZIP

Gzip网页压缩可以大幅度提升网站访问速度,对于网站在国外的站来说,这是必不可少的一步,提升网页打开速度非常明显,现在我们就系统的来认识一下这个Gzip的庐山真面目。

  一、何为GZIP

  GZIP概念

  GZIP最早由Jean-loup Gailly和MarkAdler创建,用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

  HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载.一般服务器中都安装有这个功能模块的.

  二、开启GZIP有什么好处?

  Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度。gzip可以极大的加速网站.有时压缩比率高到80%,最少都有40%以上。

    三、apache服务器如何开启gzip压缩?

   首先说一下windows环境下如何开通apache2.2服务器的gzip压缩吧

在apache2.2的安装目录下有文件夹modules/mod_deflate.so

然后修改一下conf/httpd.conf,这个是apache2.2的配置文件

将LoadModule deflate_module modules/mod_deflate.so这一句之前的#号去掉

将LoadModule headers_module modules/mod_headers.so这一句之前的#号也去掉

然后加入以下代码:  
  
     DeflateCompressionLevel 3
     # Compress everything except images

      
       # Insertfilter
      SetOutputFilter DEFLATE
      
       # Netscape4.x has some problems...
       BrowserMatch^Mozilla/4 gzip-only-text/html
      
       # Netscape4.06-4.08 have some more problems
       BrowserMatch^Mozilla/4\.0[678] no-gzip
      
       # MSIEmasquerades as Netscape, but it is fine
       BrowserMatch\bMSIE !no-gzip !gzip-only-text/html
       # Don'tcompress images
      SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzipdont-vary
      
       #Make sureproxies don't deliver the wrong content
       Headerappend Vary User-Agent env=!dont-vary

     

 

这样就可以压缩web服务器上除图片之外的资源了。

通过firefox浏览器的firebug我们可以对比一下phpinfo()方法在压缩前和压缩之后的请求响应情况。




网页的大小压缩了将近1/6,真的很可观啊,看来网站开启gzip压缩还是大势所趋的,可以大大地降低访问时的带宽的,同时还可以提高用户访问网站的速度,仔细对比上图你就会发现,未压缩前访问该页面的时间至少283ms,压缩后访问才34ms,访问时间缩短为原来的1/8还要少,这样也可以让我们的web服务器可以承载更多的人访问,不错的注意。

客户实际部署的网站这样设置了之后发现有时候apache设置的网页压缩会失效,可能是防火墙对gzip文件解压导致的吧。这时候我们可以强制压缩,但强制压缩了之后发现swfupload这个控件不能用了,上传不了文件了,检查一下原因发现,是由于后台的url返回的信息有误,实际上是由于我们设置了SetEnv force_gzip "yes" 这一行导致的,后来对于处理文件上传的后台文件就放开了不再压缩,具体设置为:


   DeflateCompressionLevel 3
    # Compresseverything except images
   
       SetEnvforce_gzip "yes"
      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-gzipdont-vary
      SetEnvIfNoCase Request_URI swfupload\.php$ no-gzip dont-vary
      SetEnvIfNoCase Request_URI uploadfile\.php$ no-gzip dont-vary
       Headerappend Vary User-Agent env=!dont-vary
   

其中swfupload\.php和uploadfile\.php这两个文件就是处理后台上传功能的文件,这样通过swfupload的flash控件上传时就不会出错了。

DeflateCompressionLevel 3这一句中的3实际上是可以修改的,改到1-9均可,不过我稍微改成了6却发现没有特别的提升。先就这样设置吧。

感谢摸索着学习apache开通压缩功能的同事给我指导。

整理linux下的gzip配置情况吧,其实这个功能在ubuntu 12.04 server版本中是内置的。

具体情况以后再写吧。

我安装lamp时用的命令是:apt-get install apache2

咱们现在测试一下看apache是否支持gzip网页压缩呢?

先写一个简单的info.php

phpinfo();

?>

然后放到/var/www/目录下

然后在firefox中输入 http://192.168.32.133/info.php

用firebug看到该网页的请求响应情况,如下图:


可以看到apache已经启用对于网页的gzip压缩了。

看一下他的配置吧







推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
author-avatar
丁志翔64164
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有