expires缓存提升网站负载

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

nginx中设置过期时间,非常简单,
在location或if段里,来写.
格式  expires 30s;
         expires 30m;
         expires 2h;
         expires 30d;

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


另: 304 也是一种很好的缓存手段
原理是: 服务器响应文件内容时,同时响应etag标签(内容的签名,内容一变,他也变), 和 last_modified_since 2个标签值
浏览器下次去请求时,头信息发送这两个标签, 服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since
浏览器知道内容无改变,于是直接调用本地缓存.
这个过程,也请求了服务器,但是传着的内容极少.

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


Nginx对于图片,js等静态文件的缓存设置
注:这个缓存是指针对浏览器所做的缓存,不是指服务器端的数据缓存.


location expires指令

        location ~ \.(jpg|jpeg|png|gif)$ {
            expires 1d;
        }
        location ~ \.js$ {
           expires 1h;
        }

设置并载入新配置文件,用firebug观察,
会发现 图片内容,没有再次产生新的请求(0kb),原因--利用了本地缓存的效果.


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


如果信息流动比较快,也可以不用expires指令,
用last_modified, etag功能(主流的web服务器都支持这2个头信息)
原理是:
响应: 计算响应内容的签名, etag 和 上次修改时间
请求: 发送 etatg, If-Modified-Since 头信息.
服务器收到后,判断etag是否一致, 最后修改时间是否大于if-Modifiled-Since 
如果监测到服务器的内容有变化,则返回304,
浏览器就知道,内容没变,直接用缓存.



304 比起上面的expires 指令
多了1次请求,
但是比200状态,少了传输内容.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值