启用GZIP压缩功能
概览
许多网络服务器可以通过调用第三方模块或使用内置程序将文件压缩为GZIP格式,然后再发送该压缩文件以供下载。这样可以在下载呈现网站所需的资源时,为您节省一些时间。
- 减少高达70%的网页大小
- 提高网页速度
- 需要访问.htaccess文件或者服务器管理文件
什么是Gzip压缩?
当用户点击你的网站时,由您的服务器提供所要求的文件,这些文件越大,到你的浏览器并显示在屏幕上所需的时间就越长。
GZIP在传输他们到浏览器之前压缩您的网页和样式表,这大大减少了传输时间,因为这些文件小得多。
GZIP压缩是网页速度优化的基本方法,现在绝大多数网站都已经启用GZIP。
GZIP是怎样工作的?
GZIP实际上是一个相当简单的想法,但是善加利用是非常强大的。 GZIP把一个文本文件的字符串替换使整个文件大小更小。
由于CSS文件和HTML文件使用了大量重复的文字,并有空白的字符,而GZIP压缩公用字符串,这可以减少页面和样式表的高达70%的大小!而对您的Web服务器启用Gzip是相对简单的。
当浏览器访问一个Web服务器时,会先检查看看是否有服务器启用GZIP,并请求该网页。如果启用,它就接收gzip文件,否则它会接收未压缩的版本,但这页面大小将大得多。
为什么这么重要
压缩GZip如此重要的主要的原因是,它减少了一个网站传输网页文件和样式表所需的时间,最终降低你的网站加载时间。
怎样添加GZip
添加GZip的方法,根据你所使用的服务器不同而不同,这取决于你使用的是IIS还是Apache或其他web服务器。
以下是某些热门网络服务器上所启用的压缩功能:
- Apache:Apache启用Gzip功能
- IIS:IIS配置HTTP压缩功能
- lighttpd:lighttpd配置gzip
- Nginx:Nginx配置Gzip功能
对于Apache服务器
你需要添加如下脚本到.htaccess文件:
<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>
当你保存.htaccess文件后,使用webkaka的GZip压缩检测以确认是否已经压缩成功。
常见问题
怎么知道网站的GZip压缩是否起作用了?
使用webkaka的网站速度诊断,在“优化建议”里可以看到网站各文件是否使用了GZip。
为什么图片、PDF和视频文件没有压缩?
GZip压缩对图片、PDF、视频和其他已经使用二进制压缩过的文件是无效的,如果你想压缩图片文件,可以看看压缩图片这里。
Flash被破坏
flash预加载器不能处理压缩的flash文件,如果你已经压缩的flash被破坏了,请不要压缩flash文件。
为什么GZip压缩没有生效?
GZip压缩没有生效的原因有很多,不同的服务器,原因也可能不一样,可以在这里查找解决方法:GZip常见问题及解决方法汇总。
建议
把网页内容写得使压缩更有效
为了使用你的网页内容得到更好的压缩,请参照如下方法:
1、确保HTML和CSS代码的一致性。为了实现一致性
- 在可能的情况以相同的顺序指定CSS关键值,例如按字母顺序排列它们。
- 以相同的顺序指定HTML属性,例如按字母顺序排列它们。把HREF第一个链接(因为它是最常见的),然后按字母顺序排列剩下的。例如,谷歌的搜索结果页面,当HTML属性是按字母顺序排列时,gzip压缩过的输出的大小减少1.5%。
- 保持字母的一致性,例如在任何时候都是小写。
- 保持引号的一致性,例如全部使用单引号,或者全部使用双引号,又或者如果可能的话干脆连引号也不要。
2、优化CSS和优化Javascript。优化CSS和Javascript不仅可以帮助外部的CSS和Javascript文件的压缩,还可以帮助HTML页面内嵌的CSS和Javascript代码。
不要使用GZip压缩图片和其他二进制文件
网页支持已经压缩过的图片文件,同样支持已经压缩过的视频、PDF等二进制文件;使用GZip压缩这些文件,不会提供额外的好处,反而使他们的体积变得更大。要压缩图片,请来这里:图片压缩优化。
本页面中的内容已获得知识共享署名3.0许可,并且代码示例已获得Apache 2.0许可;另有说明的情况除外。
文章源地址:https://developers.google.com/speed/docs/insights/EnableCompression