我尝试每隔几秒钟运行一次 wget/curl 来缓存不断变化的 HTTP 文件(动态生成的文件,每个 HTTP 请求都不同)。
- 源获取有点慢(约 10 秒)且成本高昂,这就是为什么我想缓存它并立即满足用户请求。大部分时间都花在 HTTP 摘要身份验证和等待服务器 HTTP 响应上(需要几秒钟才能在服务器上生成响应)。
- 这些文件相当小,所以我将它们下载到 tmpfs
- 无法使用 nginx 进行反向代理,因为源需要 HTTP 摘要身份验证(用户 --> HTTPS,无身份验证 --> 服务器 --> HTTP,摘要身份验证 --> 源)
问题是 wget/curl 在下载过程中立即写入文件(等待原始 HTTP 响应时,文件为 0 字节,持续数秒)。当客户端访问缓存文件时,我想为他们提供最新的缓存副本,而不是 0 字节文件或半完成的下载。
我尝试wget --backups 10
使用 filename.1(代价是引入 1 个刷新周期的延迟),但它似乎不起作用-O
并且没有保存任何副本(文件每次都会被覆盖)。
是否有更好的解决方案来提供最后的缓存副本?