高性能网站建设-4压缩组件
Posted xuzhengguo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能网站建设-4压缩组件相关的知识,希望对你有一定的参考价值。
1.使用gzip编码来压缩HTTP响应包
- 这是减小页面大小最为简单的技术,但影响是最大的。
1.1 从HTTP1.1开始,Web客户端可以通过HTTP请求中的Accept-Encoding头来表示对压缩的支持。
Accept-Encoding:gzip,deflate
1.2Web服务器通过响应中的Content-Encoding头来通知web客户端。
Content-Encoding:gzip
1.3 gzip是目前最流行和最有效的压缩方法 。有很多浏览器支持gzip却不支持deflate。
2.压缩什么
2.1实际上,值的压缩的内容包括XML和JSON在内的任何文本响应。
2.2图片和PDF不应该压缩。为什么?因为本来已经被压缩了,试图压缩只会浪费CPU资源,还有可能增大文件大小。
2.3压缩的成本--1.服务器端花费CPU来完成压缩2.客户端对压缩文件进行解压缩
2.4经验:通常对大于1KB或2KB的文件进行压缩。
2.5压缩通常能将响应的数据量减少将近70%
3.配置
3.1为什么仅仅介绍Apache?因为:Apache是Internet上最流行的WEB服务器。
3.2配置gzip使用的模块取决于Apache的版本----Apache1.3使用mod_gzip,而Apache2.x使用mod-delfate。
3.3 很多Web主机服务都默认为text/html打开了mod_gizp。最重要的配置修改就是需要明确压缩脚本和样式表。
3.4Apache1.3--mod_gzip
- Apache 1.3的gzip压缩由mod_gzip模块提供。
- mod_gzip_on 启用mod_gzip
- mod_gzip_item_include;mod_gizp_item_exclude
- gzip命令行提供了一个选项,用于控制压缩的程度。
- mod_gzip提供了选项,可以将保存压缩过的内容自动保存在磁盘上,并在原内容变化时更新压缩过的内容。mod_gzip_can_negotiate和mod_gzip_update_static
3.5Apache2.x --mode_deflate
- 尽管模块名字是这样的,但是用gzip进行压缩。
- mod_deflate包含了一个用于控制压缩级别的指令--Deflate CompressionLevel
4代理缓存
4.1当浏览器通过代理来发送请求时,情况会变得很复杂。
- 解决方案:在Web服务器的响应中,添加Vary头。--需要在服务器的Vary响应头中包含Accept-Encoding 。 Vary:Accept-Encoding。
- 在默认情况下,mod_gzip会像所有响应添加Vary:Accept-Encoding头,以驱使代理执行正确的操作。
5边缘情形
5.1今天大约90%的通过浏览器进行的Internet通信都需要使用gzip。
5.2浏览器白名单方式:只为已经证实过支持压缩的浏览器提供压缩内容。例如:IE 6.0及以后版本、Mozilla 5.0及以后版本。
- 在Apache1.3中,使用User-Agent来指定浏览器白名单。
- 在Apache2.x中,使用BrowserMatch指令
- 最佳做法是将User-Agent作为代理的另一种评判标准,添加到Vary头中。 Vary:Accept-Encoding,User-Agent
5.3 最好使用Cache-Control:private,为所有浏览器禁用代理缓存。→会增加带宽开销,因为代理无法缓存你的内容。
6平衡压缩与代理支持的决定
6.1网站用户很少,并且处于一个小圈子中。压缩内容并使用Vary:Accept-Encoding。→减小组件大小、利用代理缓存
6.2更注意带宽开销--与上面的方法一样。
6.3有大量的、多变的用户群,并且能够应付较高的带宽开销,并享有高质量的名声。压缩内容并使用Cache-Control:Private。→压缩内容,禁用代理缓存,避免了边缘情形。
7.压缩通常能将内容压缩约70%,但这会随着空白及重复字符的数量而变化。
以上是关于高性能网站建设-4压缩组件的主要内容,如果未能解决你的问题,请参考以下文章