网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系,例如谷歌就可以通过直接读取Gzip文件来比普通手工抓取更快地检索网页。在谷歌网站管理员工具(Google网站管理员工具)中你可以看的到,sitemap.xml。广州是直接作为站点地图被提交的。
而这些好处并不仅仅限于静态内容,PHP动态页面和其他动态生成的内容均可以通过使用Apache压缩模块压缩,加上其他的性能调整机制和相应的服务器端缓存规则,这可以大大提高网站的性能,因此,对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,我们建议你开启使用Gzip Web压缩。下面来一起看看详细的介绍吧。
内容编码:gzip 内容编码:压缩 内容编码:缩小
客户端在接受到返回的数据后去检查对应字段的信息,然后根据对应的格式去做相应的解码。客户端在请求时,可以用接受编码字段说明自己接受哪些压缩方法。
接受编码:gzip,缩小
我们在浏览器的控制台中可以看到请求的相关信息
<强>兼容性强>
提到浏览器作为一个前端就不由自主的会想一个问题,会不会有浏览器不支持呢.北京/1.0是1996年5月发布的。好消息是基本不用考虑兼容性的问题,几乎所有浏览器都支持它。值得一提的是ie6的早起版本中存在一个会破坏gZip的错误,后面ie6本身在WinXP SP2中修复了这个问题,而且用这个版本的用户数量也很少。
<强>谁去压缩文件强>
这件事看起来貌似只能服务端来做,我们在网上看到最多的也是诸如nginx开启gZip配置之类的文章,但是现在前端流行温泉应用,用反应,vue之类的框架时候总伴随这一套自己的脚手架,一般用webpack作为打包工具,其中可以配置插件如compression-webpack-plugin可以让我们把生成文件进行gZip等压缩并生成对应的压缩文件,而我们应用在构架时候有可能也会在服务区和前端文件中放置一层节点应用来进行接口鉴权和文件转发.nodejs中我们熟悉的表达框架中也有一个压缩中间件,可以开启gZip、一时间看的人眼花缭乱,到底应该用谁怎么用呢?
服务端响应请求时候压缩
其实nginx压缩和节点框架中用中间件去压缩都是一样的,当我们点击网页发送一个请求时候,我们的服务端会找到对应的文件,然后对文件进行压缩返回压缩后的内容【当然可以利用缓存减少压缩次数】,并配置好我们上面提到的内容编码信息。对于一些应用在构架时候并没有上游代理层,比如服务端就一层节点就可以直接用自己本身的压缩插件对文件进行压缩,如果上游配有有nginx转发处理层,最好交给nginx来处理这些,因为它们有专门为此构建的内容,可以更好的利用缓存并减小开销(很多使用c语言编写的)。
我们看一些nginx中开启gZip压缩的一部分配置