nginx的缓存设置 expires缓存提升网站负载

本文介绍如何通过Nginx的expires指令优化网站性能,实现对图片、JS等静态资源的有效缓存,并探讨使用last_modified及etag进行缓存验证的方法。

nginx的缓存设置  提高网站性能

对于网站的图片,尤其是新闻站,图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后,图片缓存在用户的浏览器端,且时间比较长的缓存.

可以, 用到nginxexpires设置.

nginx中设置过期时间,非常简单,

locationif段里,来写.

格式  expires 30s;

      expires 30m;

      expires 2h;

      expires 30d;

(注意:服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效)

: 304 也是一种很好的缓存手段

原理是: 服务器响应文件内容是,同时响应etag标签(内容的签名,内容一变,他也变),last_modified_since 2个标签值

浏览器下次去请求时,头信息发送这两个标签,服务器检测文件有没有发生变化,如无,直接头信息返回etag,last_modified_since

浏览器知道内容无改变,于是直接调用本地缓存.

这个过程,也请求了服务器,但是传着的内容极少.

对于变化周期较短的,如静态html,js,css,比较适于用这个方式


例:把图片缓存一天

location ~* \.(jpg|jpeg|gif|png){

   expires 1d;

}



Nginx对于图片,js等静态文件的缓存设置

:这个缓存是指针对浏览器所做的缓存,不是指服务器端的数据缓存.


主要知识点: location expires指令


        location ~ \.(jpg|jpeg|png|gif)$ {

            expires 1d;

        }

        location ~ \.js$ {

           expires 1h;

        }


设置并载入新配置文件,firebug观察,

会发现 图片内容,没有再次产生新的请求,原因--利用了本地缓存的效果.



: 在大型的新闻站,或文章站中,图片变动的可能性很小,建议做1周左右的缓存

Js,css等小时级的缓存.



如果信息流动比较快,也可以不用expires指令,

last_modified, etag功能(主流的web服务器都支持这2个头信息)

原理是:

响应: 计算响应内容的签名, etag 和 上次修改时间

请求: 发送 etatg, If-Modified-Since 头信息.

服务器收到后,判断etag是否一致, 最后修改时间是否大于if-Modifiled-Since 

如果监测到服务器的内容有变化,则返回304,

浏览器就知道,内容没变,直接用缓存.



304 比起上面的expires 指令

多了1次请求,

但是比200状态,少了传输内容.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值