高性能网站建设学习笔记----压缩组件
1、减小http响应的大小可以减少响应时间,减小传输包的大小可以有效的提高传输速度。gzip技术可用来压缩http响应包,并由此减少网络响应时间。
2、web客户端: http请求中的Accept-Encoding头可以标识对压缩的支持:Accept-Encoding:gzip
web服务器:通过相应中的Content-Encoding头来通知web客户端:Content-Encoding:gzip
3、图片和PDF不应该压缩,因为本来就是已经压缩过的了,应该压缩脚本,样式表,html文档等。
4、成本:服务器会花费额外的cpu来完成压缩,客户端要对压缩过的文件进行解压。通常对大于1kb或者2kb的文件进行压缩。
5、apache 1.3 服务器使用mod_gzip模块来完成gzip压缩:
启用mod_gzip: mod_gzip_on
指定哪些文件需要进行压缩: mod_gzip_item_include file \.js$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_include file \.css$
mod_gzip_item_include mime ^text/css$
压缩过的内容保存在磁盘上,并且在原内容发生变化是更新压缩过的内容
mod_gzip_can_negotiate yes
mod_gzip_update_static yes
没有控制压缩级别的指令
6、apache 2.x 服务器使用mod_deflate模块来完成gzip压缩
通过以下配置完成对哪些文件需要进行压缩
AddOutputFilterByType DEFLATE text/html text/css application/x-javascript
控制压缩级别的指令:DeflateCompressionLevel
7、代理缓存
使用代理的请求,会发生缓存中的组件(有可能是压缩过的有可能是未压缩过的,取决于缓存它的那个请求是压缩还是为压缩请求)并非是想要的压缩或者未压缩组件。解决这种情况的方法是在web服务器的响应头中添加Vary头。Vary: Accept-Encoding。这使得代理缓存会缓存两个版本:压缩的和非压缩的。
8、浏览器白名单
用来指定哪些浏览器使用gzip,避免向一些不支持gzip的浏览器提供gzip服务
apache 1.3:
mod_gzip_item_include reqheader "User-Agent:MSIE[6-9]"
mod_gzip_item_include reqheader "User-Agent:Mozilla/[5-9]"
apache 2.x:
BrowserMatch ^MSIE [6-9] gzip
BrowserMatch ^Mozilla/[5-9] gzip
浙公网安备 33010602011771号