技术解析

请教如何配置 nginx 缓存参数, 20 万+个缓存文件
0
2021-05-20 21:22:50
idczone

网站需要缓存抗投诉服务器的页面有 20 万多个,请问如何设置?

目前设置: proxy_cache_path "D:/web/test.com/cache" keys_zone=test.com:50m levels=2:2:2 inactive=20m max_size=30g;

上次测试的时候感觉重启 nginx 的时候,nginx 会扫描缓存目录,删除过期缓存。

问题 1: 20 多万的缓存文件,nginx 启动的时候,目前这样设置会不会有问题?

问题 2: 缓存基本不变,不方便生成 html 静态文件,能不能将缓存有效期设置为 1 年?


很奇葩的问题...你为什么要这样设置...
另外 windows 下 IIS 才是唯一高性能 web 服务器

你是不是对缓存有什么误解。缓存是让你增加一小部分资源,cover 90% 的请求,不是让你把全部数据一股脑丢进缓存里的。
你这样配置,硬盘还是要在一堆文件里面随机寻址,速度也快不到哪里去的。

10 多万详情页(不含列表页)每一段时间会被访问一次,有些时候会出现访问高峰,导致服务器数据库 CPU 占用异常的高。如果服务器就一个这种到没啥问题,问题是有 5 个以上这种网站。

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/configure-and-enable-disk-cache-in-application-request-routing

谢谢,暂时还不能调整到 IIS

inactive 值太低了,已改为 7d

Windows 你还是用 IIS,Nginx 快是利用 Linux 内核

windows 下用 nginx 本来就坑

Windows 下 Nginx 是用 select 模拟的
既没有 epoll 也没有 sendfile
根本就是个废物
要么换 Linux 要么换 IIS

生成静态 html 很方便,nginx cache 的不就是静态 html ?

是啊,所以来问问有效期最长能多久。

要存一年,你要做的是静态化持久存储,不是缓存。
生成 HTML 没什么不方便的,网站程序改不了你也可以用 Nginx 实现,接收请求时 Nginx 先检查 HTML 文件目录有没有 对应的 HTML 文件,有就直接返回 HTML 文件,没有就抓取保存到 HTML 目录并返回。
另外,不要在 Windows 用 Nginx 来生产。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服