编程技术分享平台

网站首页 > 技术教程 正文

15、Nginx-网页压缩传输(nginx转发文件流)

xnh888 2024-10-15 18:23:04 技术教程 21 ℃ 0 评论

1、gzip压缩技术

gzip(GNU-ZIP)是一种压缩技术,经过gzip压缩后,页面大小可以变为原来的30%甚至更少,这样用户访问的时候速度会快得多。gzip网页压缩的实现需要浏览器和服务器的支持。

gzip压缩的过程:

首先在服务器端压缩,然后传到浏览器端后解压,当浏览器支持gzip解压时,会在请求消息头中包含Accept-Encoding:gzip,这样Nginx就会向浏览器发送经过gzip后的内容,同时在响应消息头中加入Content-Encoding:gzip,这是gzip后的内容,告知浏览器要先解压才能解析输出。

2、网页压缩传输配置

Nginx服务器为网页压缩专门提供了gzip模块,并且模块中的相关指令均可以设置在http,server,location块中,实现服务器端按照指定的设置进行压缩,具体指令如下:

  • gzip:用于开启或关闭gzip模块;

  • gzip_buffers:设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流;

  • gzip_comp_level:gzip压缩比,压缩级别是1~9,1的压缩级别最低,9的压缩级别最高,压缩级别越高压缩率越大,压缩时间越长;

  • gzip_disable:对一些特定的User-Agent不使用压缩功能;

  • gzip_min_length:设置允许压缩的页面最小字节数,页面字节数从响应消息头的Content-Length中进行获取;

  • gzip_http_version:识别HTTP协议版本,其值可以是1.1(默认值)或1.0;

  • gzip_proxied:用户设置启用或禁用从代理服务器上收到响应内容的gzip压缩功能;

  • gzip_types:匹配MIME类型进行压缩,且无论是否指定,text/html类型总是会被压缩的;

  • gzip_vary:用于在响应消息头中添加Vary,Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩;

1、修改配置文件

2、访问测试

Content-Encoding为gzip类型,Content-Type为html,Transfer-Encoding为chunked表示内容长度不确定;

除了上述配置外,在实际开发 中还可以具体配置压缩比,缓存大小,对于代理是否采用压缩等详细的设置:

  • gzip_buffers 4 16k; //按照原始数据大小以16KB为单位的4倍申请内存;

  • gzip_comp_level 4; //压缩等级;

  • gzip_disable "MSIE [1-6]."; //IE6时,不进行压缩,防止出现页面假死现象;

  • gzip_min_length 5k; //当响应内容大于5kb时进行压缩输出,且一般建议最小值设置为1kb,当小于1kb时,可能会出现越压越大的问题;

  • gzip_http_version 1.0;

  • gzip_proxied any;

  • gzip_vary on;

gzip_proxied常用参数:

  • any:无条件压缩所有响应数据;

  • off:关闭反向代理的压缩;

  • expired:如果响应消息头包含Expires,启用压缩;

  • no-cache:如果响应消息头包含Cache-Control:no-cache,启用压缩;

  • no-store:如果响应消息头包含Cache-Control:no-store,启用压缩;

  • private:如果响应消息头包含Cache-Control:private,启用压缩;

  • no_last_modified:如果响应消息头中不包含Last-Modified,启用压缩;

  • no_etag:如果响应消息头中不包含ETag,启用压缩;

  • auth:如果响应消息头中包含Authorization头信息,启用压缩;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表