前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 缓存控制

Nginx 缓存控制

作者头像
星哥玩云
发布2022-06-28 16:39:36
6520
发布2022-06-28 16:39:36
举报
文章被收录于专栏:开源部署

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,我们可以选择将缓存放在共享内存中。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档