阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx 缓存控制

175次阅读
没有评论

共计 1337 个字符,预计需要花费 4 分钟才能阅读完成。

nginx 有好几个参数控制缓存,以 nginx 缓存图片文件作为例子。

第一,缓存池
proxy_cache_path  /var/cache/nginx/proxy_cache levels=1:2 keys_zone=static:50m max_size=10g inactive=3d;

这个参数控制缓存池的规模, 以及与源服务器的交互频率。缓存淘汰是非常被动的,仅仅是为了维护缓存池的规模。

本例使用 50M 共享内存维护缓存文件列表,如果一个文件 3 天内不活跃,即没被人二次访问,则在缓存池中淘汰掉,在硬盘上缓存的文件总量最高为 10G。如果缓存池里的文件都是 3 天内的文件,且总量已经达到 10G,那么此时缓存池的淘汰规则是 LRU –Last Recent Used(访问频率最低的被淘汰)。

第二,缓存的生命周期
proxy_cache_valid  200 302 3d;

这个参数直接控制缓存的生命周期,
本例中,如果图片在 3 天内再次被访问,则直接命中缓存池,返回 HIT,
超过 3 天时间就主动跳过缓存池,直接从源服务器再取一遍,再跟缓存池进行比较。
如果缓存池里有,则更新缓存的时间戳,并返回 EXPIRE,
如果缓存池里没有,则重新生成缓存,并返回 MISS,
这个值应该 <= 缓存池的文件失效时间才能提高命中率。

第三,浏览器缓存的生命周期

expires 7d

这个参数控制浏览器保存图片多久, 分为几个阶段:
(不同的浏览器行为稍有不同,以 chrome 为例)

1、客户使用浏览器第一次打开网页,服务器返回 200,图片进入浏览器缓存,生命周期是 7 天
2、第二天,客户用浏览器再次打开网页时,返回代码依然是 200,但是命中的是本地缓存
3、客户使用 F5 刷新了浏览器,强制与服务器发生通信,在与服务器比较后发现,文件跟浏览器缓存是一样的,于是得到了 304,如果不一样,则是 200。

这三个参数,对于缓存服务器影响较大的是第一二个参数。

首先,我们应该维护一个尽可能大的缓存池,把面做广;
其次,我们要提高缓存命中率,减少缓存与源服务器的交互频率。

最后,如果是小范围的缓存,为了节省昂贵的磁盘 IO,我们可以选择将缓存放在共享内存中。

推荐阅读

 

Nginx 实现反向代理和负载均衡的配置及优化 http://www.linuxidc.com/Linux/2013-11/92909.htm

 

Nginx 做负载均衡报:nginx: [emerg] could not build the types_hash http://www.linuxidc.com/Linux/2013-10/92063.htm

 

Nginx 负载均衡模块 ngx_http_upstream_module 详述 http://www.linuxidc.com/Linux/2013-10/91907.htm

 

Nginx+Firebug 让浏览器告诉你负载均衡将请求分到了哪台服务器 http://www.linuxidc.com/Linux/2013-10/91824.htm

 

Ubuntu 安装 Nginx php5-fpm MySQL(LNMP 环境搭建) http://www.linuxidc.com/Linux/2012-10/72458.htm

 

Nginx 的详细介绍 :请点这里
Nginx 的下载地址 :请点这里

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1337字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中