您的位置:首页 > 运维架构 > Nginx

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

2015-12-06 11:42 489 查看
nginx的缓存设置 提高网站性能
对于网站的图片,尤其是新闻站,图片一旦发布,
改动的可能是非常小的.我们希望 能否在用户访问一次后,图片缓存在用户的浏览器端,且时间比较长的缓存.
可以, 用到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,比较适于用这个方式

例:把图片缓存一天
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状态,少了传输内容.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: