Nginx缓存实现
来源:互联网 发布:一级域名备案 编辑:程序博客网 时间:2024/05/21 17:26
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缓存实现
- nginx缓存的设计和实现
- Nginx 实现本地静态文件内存缓存
- 配置Nginx expires缓存实现性能优化
- Nginx实现负载均衡与Nginx缓存功能
- nginx缓存
- Nginx缓存
- nginx - cache manage process 过期缓存定期清理的实现
- lua实现nginx proxy_store的purge缓存清理的方法
- nginx+redis 实现 jsp页面缓存,提升系统吞吐率
- Varnish+Nginx实现单双Web服务器缓存
- OpenResty(Nginx)+Lua+GraphicsMagick实现图片截图与缓存 二
- SpringBoot+Redis+Nginx实现负载均衡以及Session缓存共享
- Nginx:设置Nginx作为缓存
- nginx 缓存服务器
- nginx 静态文件缓存
- nginx 静态文件缓存
- Nginx 的 proxy_store 缓存
- winfrom SQL server 控件Listbox 输出数据表中的所有行和指定列
- Hdu 2152 Fruit 母函数
- 关于TCP打洞技术(P2P)
- 恒天云技术分享系列3 – KVM性能调优
- java单例模式
- Nginx缓存实现
- asp sql语句中怎么比对两个时间
- 使用sshfs挂载远程目录
- Ubuntu14.04 Android系统源码编译环境初始化
- 根据下载的 openvswitch-1.9.3.tar.gz 包制作ovs的 rpm安装包
- 向iOS开发者介绍C++(二)
- 网盘存储原理
- oracle创建表设设定列只能输入大写字母
- android 切换主题介绍一