Gzip

来自站长百科
跳转至: 导航、​ 搜索

Gzip就是 GUN zip,由 Jean-loup Gailly 和 Mark Adler 创建,用于 UNIX/ Linux 系统的文件压缩。我们在 Linux 中经常会用到后缀为.gz 的文件,它们就是 gzip 格式的。现今已经成为 Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP 协议上的 gzip 编码是一种用来改进 Web 应用程序性能的技术。大流量的 Web 站点常常使用gzip 压缩技术来让用户感受更快的速度。

http传输 gzip的压缩效果[ ]

经过测试,基本可以压缩70%以上,甚至80%

在这里可以测试是否启用gzip以及压缩效率:网页gzip压缩检测

HTTP压缩概述

HTTP压缩是在Web服务器浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTMLJavaScriptCSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP 压缩算法。

现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。对于纯文本来讲,压缩率是相当可观的。如果每个用户节约50%的带宽,那么你租用来的那点带宽就可以服务多一倍的客户了。

  • Header信息介绍:Content-Location:表示内容定位,指定包含于请求或响应中的资源定位(URI);
  • Content-Length:表示内容长度,指定包含于请求或响应中数据的字节长度;
  • Content-Type:表示内容类型,指定标明发送或者接收的文档的MIME类型;Accept-Ranges:表示请求范围的度量单位;
  • Date:表示当前的GMT时间;Last-Modified:表示最后修改时间;Server:表示服务器名字;
  • X-Powered-By:表示通过的技术;
  • Etag:表示文件标识符;
  • Connection:表示否保存socket连接;

如何启用gzip[ ]

apache 2中启用Gzip[ ]

服务器使用的是 Apache 2,服务器是采用 mod_deflate 模块来实现 gzip。

其实我们在 httpd.conf或.htaccess 中加入以下代码可以压缩 HTML, PHP, JS, CSS, XML 后缀的文件。

<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript
</ifmodule>

Apache 1中启用Gzip[ ]

如果服务器 Apache 版本不是 2.0 而是 1.3,就可以使用 ob_gzhandler 函数进行压缩(需要 PHP 含有 zlib 库,一般有)。如果你的程序已经内置了对gzip的支持(例如Discuz),只需要在后台启用Gzip即可。如果你的程序不支持,可以在php.ini中加入下面的语句启用对php文件的压缩:

output_buffering = Off
output_handler =
zlib.output_compression = On

如果php文件不多,也可以在php文件中加入如下语句启用gzip

在文件的首行加入

<?php
If(Extension_Loaded(’zlib’)){
   Ob_Start(’ob_gzhandler’);
}
?>

最后在文件的末行加入

<?php If(Extension_Loaded(’zlib’)) { Ob_End_Flush(); } ?>

Apache 1中给html css文件启用gzip[ ]

有三种方法:

  • 让apache将html文件当作php文件处理即可。

在.htaccess文件中加入下面的语句即可:

AddHandler x-httpd-php .html .htm

如果要压缩CSS,在语句中加入即可。

  • 将静态页面的后缀修改为php,并且在文件中加入:

在文件的首行加入

<?php
If(Extension_Loaded(’zlib’)){
   Ob_Start(’ob_gzhandler’);
}
?>

最后在文件的末行加入

<?php If(Extension_Loaded(’zlib’)) { Ob_End_Flush(); } ?>
  • 建立一个php文件,把所有请求都定向到这个文件,然后用这个文件载入要访问的内容。

相关条目[ ]


参考内容[ ]