加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

Nginx Stale Cache和proxy_cache_path

发布时间:2020-12-13 21:39:44 所属栏目:Nginx 来源:网络整理
导读:我把Nginx放在php app服务器前作为反向代理来缓存动态内容并保存一些点击到php. 我已经使用下面的设置配置了Nginx,希望我能实现以下行为. 1)在尝试从应用服务器重新提取之前,Nginx将缓存200个状态代码内容20米 2)缓存将保留最多7天,以处理对不常访问的内容的

我把Nginx放在php app服务器前作为反向代理来缓存动态内容并保存一些点击到php.

我已经使用下面的设置配置了Nginx,希望我能实现以下行为.

1)在尝试从应用服务器重新提取之前,Nginx将缓存200个状态代码内容20米

2)缓存将保留最多7天,以处理对不常访问的内容的陈旧请求.

3)在最初缓存内容后20分钟内发出的请求将向后端发出请求以进行全新更新,但将提供过时版本,以便客户端获得即时响应.

proxy_cache_path  /var/lib/nginx/cache  levels=1:2   keys_zone=staticfilecache:512m inactive=7d max_size=15000m;
proxy_cache_use_stale timeout updating error invalid_header;
proxy_cache_valid 200 20m; 
proxy_cache_valid       404 1m;
proxy_cache_valid       any 15m;

更新:
在运行了一些更多的测试并观察服务器日志之后,看起来超过20米的内容不是从缓存中提供的,而是在缓存中,而是在cache_file_system中构建.

有任何想法如何让Nginx长时间提供陈旧内容?用例基本上是缓存不常访问的内容,这些内容在我的应用服务器上生成成本很高.能够在缓存到期后的几天内提供陈旧项目,当一个热门终于进入时将是一个很大的性能提升.如果使用Nginx无法做到这一点,我会对其他代理/缓存选项开放(我只使用这个Nginx实例作为缓存).

最佳答案
事实证明,这与Nginx不是currently possible.我最终设置了Varnish长TTL(7天)以及长期优雅设置(2天).然后我每隔几天和force a warming of the cache就有一个脚本命中每个URL.

鉴于我需要缓存的内容量以及每个项目的访问频率,我首先担心运行Varnish的成本会高得令人沮丧(所有RAM!) – 这就是我查看Nginx文件的原因基于缓存.但是,Varnish确实有一个文件支持的缓存选项,对我来说效果非常好.到目前为止,我的缓存大约是80GB,表现非常好!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读