文章正文

Nginx-​缓存、压缩

【文章】2020-04-23

简介Nginx-​缓存、压缩

场景:业务中一般存在页面来回切换或加载同样的素材,若每次相同素材加载都需要重新加载是很消耗流量和加重响应速度

解决:nginx通过expires配置缓存时间告知浏览器该素材可进行缓存并缓存多长时间;

expires

语法:expires [time|@time-of-day|epoch|max|off] 

默认值:expires off 

使用字段:http, server, location 

这个指令控制是否在应答中标记一个过期时间,如果是,如何标记。


·off 将禁止修改头部中的 Expires和Cache-Control字段。

·epoch 将Expires头设置为1 January, 1970 00:00:01 GMT。

·max 将Expires头设置为31 December 2037 23:59:59 GMT,将Cache-Control最大化到10 years。

·如果将指令设置为一个不带@标记的值,那么过期时间将是应答时间的相对时间(如果这个时间在“modified”之前),或者是文件的修改时间(当"modified"存在,在版本0.7.0和0.6.32可用),并且可以指定一个负的时间,它将Cache-Control头设置为no-cache比较。

·如果指令的值被设置为一个带@标记的值,那么将指定一个绝对的time-of-day过期时间,可以指定两种格式分别为Hh或Hh:Mm,其中H的大小范围为0到24,M的大小范围为0到59(在0.7.9和0.6.34可用)。

一个非负的时间值将Cache-Control头设置为 max-age = #,#将适当的换算为秒数。

注意:expires仅仅适用于200, 204, 301, 302,和304应答


常用的配置:

server {

        listen       8080;

        server_name  localhost;

        location  / {

    root   html;

        }

#告知浏览器缓存此文件并设置缓存时间

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {

expires 10s;#缓存2秒

#expires 2m;#缓存2分钟

        #expires 2h;#缓存2小时

        #expires 2d;#缓存2天

            root   html;

        }

        error_page   500 502 503 504  /50x.html;

        location  /50x.html {

            root   html;

        }

    }

通过测试我们可以看到二次访问加载时间为0秒;响应上显示缓存时间为10秒,达到要求 


压缩

场景:一些项目静态资源如html、css、js等都很多且很大,请求起来很费时间及流量,但这些资源往往都可以进行压缩,并且压缩比例很大;

解决:nginx使用gzip可指定类型进行压缩


gzip

语法:gzip on|off 

默认值:gzip off 

使用字段:http, server, location, location中的if字段

指定是否启用gzip压缩。


经常搭配下面使用:

gzip_types:默认值为gzip_types text/html ;为除“text/html”之外的MIME类型启用压缩,“text/html”总是会被压缩。

gzip_min_length:默认值为gzip_min_length 0 ;设置被压缩的最小请求,单位为bytes。少于这个值大小的请求将不会被压缩,这个值由请求头中的Content-Length字段决定。

gzip_buffers :默认值为gzip_buffers 4 4k/8k ;指定缓存压缩应答的缓冲区数量和大小,如果不设置,一个缓存区的大小为分页大小,根据环境的不同可能是4k或8k。

gzip_comp_level :默认值为gzip_comp_level 1 ;指定压缩等级,其值从1到9,1为最小化压缩(处理速度快),9为最大化压缩(处理速度慢)。

实例如下:

    server {

        listen       2015;

        server_name  localhost;

        location  / {

     # 对js、css、html格式的文件启用gzip压缩功能,图片格式由于压缩比例太小,且压缩耗费cpu不建议压缩

            gzip on; # 启用gzip压缩,默认是off,不启用

    gzip_types application/javascript text/css;#为除“text/html”之外的MIME类型启用压缩,“text/html”总是会被压缩。

    gzip_min_length 1024; # 所压缩文件的最小值,小于这个的不会压缩

    gzip_buffers 4 1k; # 设置压缩响应的缓冲块的大小和个数,默认是内存一个页的大小

    gzip_comp_level 1; # 压缩水平,默认1。取值范围1-9,取值越大压缩比率越大,但越耗cpu时间

    root   html;

        }

        error_page   500 502 503 504  /50x.html;

        location  /50x.html {

            root   html;

        }

    }

打赏支持

感谢您的支持,加油!

打开微信扫码打赏,你说多少就多少

找书费时,联系客服快速查找!

扫码支持

在线客服8:30-22:30,若离线请留言!

获取教程,请联系在线客服!

扫码支持

在线客服8:30-22:30,若离线请留言!

热门阅读

找PDF电子书,太费时间?

  • 微信扫描二维码,让客服快速查找。
  • 在线客服8:30-22:30,若离线请留言!

    PDF电子书