一、gzip简介
gzip是一种数据压缩格式,在HTTP协议中被广泛应用。这种压缩格式可以减少传输数据的大小,从而加速网站的加载速度。
起初,gzip只是压缩文本文件,例如HTML、CSS和JavaScript。但自从HTTP/2的普及,服务器也可以压缩图像和音频这样的非文本文件。
在gzip被广泛应用于网站上时,很多网站将其称为content-encoding。因此,当我们想要启用gzip时,我们需要将其配置为content-encoding。
二、gzip的启用
要启用gzip,我们需要在服务器上使用正确的设置。在Apache服务器上,我们可以通过以下方法启用gzip:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
在上面的代码块中,我们定义了不同类型的文件压缩设置。当浏览器尝试访问Web站点上的一个特定类型的文件时,服务器开始应用适当的压缩算法对该文件进行压缩。在所有应用的设置中,最重要的类型将是text/html和text/css,因为它们构成了Web内容的大部分。
三、测试gzip是否启用
您可以使用以下命令,测试您的网站是否已经启用gzip。
curl -H "Accept-Encoding: gzip" -I http://example.com/somefile.html
如果输出中包含Content-Encoding: gzip,那么说明gzip已经成功启用。
四、优化gzip
1. 不要同时启用gzip和其他形式的压缩
在某些情况下,如果您同时启用了gzip和其他形式的压缩,您可能会看到问题。例如,如果您在PHP里启用了gzencode(),那么gzip将针对具有与与gzencode()相同内容的HTML文件执行两次压缩。
2. 缩小文件
对于大多数Web文件(例如HTML,CSS,JavaScript和其他文本文件),大大增加的压缩率可以通过使用更少或更简洁的代码来实现。此外,某些类型的图像(例如JPEG)只需要进行轻微的压缩。您可以使用各种在线工具来压缩这些文件。
3. 设置适当的压缩级别
Gzip支持不同的压缩级别,取决于需要的压缩速度和结果大小之间的权衡。在Apache配置文件中(.htaccess或httpd.conf),我们使用DeflateCompressionLevel指令,指定gzip的压缩级别。这个选项有9个不同的值,最大压缩值为9,最小的为0。
例如:
DeflateCompressionLevel 6
4. 压缩静态文件
与动态内容不同,静态内容通常没有频繁更新。因此,将其作为预先compress的文件,可以大大缩短压缩时间。对于使用Apache服务器的站点:这可以通过mod_cache和mod_deflate指令来实现。
5. 减少HTTP请求
缩减页面上的资源数量。例如,服务端静态文件也不那么有价值。将图像裁剪成小尺寸,并考虑使用CSS Sprites。HTML和CSS文件可以通过最小化和文件组合来进行优化,其他可重复利用的文件,例如公共脚本库(如jQuery),也可以从CDN上加载。
五、使用gzip的优点
使用gzip主要有以下几点优势:
1. 更快的加载速度
通过gzip压缩,文件传输的数量减少,文件传输的速度也会更快。这不仅有助于提高网站的加载速度,而且有助于大幅度减少文件传输的数量。
2. 较少的带宽使用
Gzip可以大大降低您Web站点的带宽使用。这非常重要,特别是对于那些带宽有限的用户而言。通过较少的数据传输,您可以更快地获得所需的信息。
3. 更高的SEO
使用gzip有很多好处,其中最大的好处之一是提高搜索引擎优化(SEO)。搜索引擎一般会比较网站的加载速度,并将其作为排名因素之一。使用gzip可以使网站加载速度更快,如果您的网站能够在短时间内加载,那么您的网站就会在搜索引擎中排名更高。
结论:
在网站的优化中,启用gzip压缩是必需的。它可以使Web内容的大小缩小至原来的两倍以上,这将大大加快页面加载的速度,节省带宽使用。在本文中,我们还介绍了一些与gzip优化相关的方法,希望您在使用gzip的同时,也可以参考这些方法,用更有效的方式来提高Web站点的性能。