wget/curl 在下载完成之前不会写入文件

wget/curl 在下载完成之前不会写入文件

我尝试每隔几秒钟运行一次 wget/curl 来缓存不断变化的 HTTP 文件(动态生成的文件,每个 HTTP 请求都不同)。

  • 源获取有点慢(约 10 秒)且成本高昂,这就是为什么我想缓存它并立即满足用户请求。大部分时间都花在 HTTP 摘要身份验证和等待服务器 HTTP 响应上(需要几秒钟才能在服务器上生成响应)。
  • 这些文件相当小,所以我将它们下载到 tmpfs
  • 无法使用 nginx 进行反向代理,因为源需要 HTTP 摘要身份验证(用户 --> HTTPS,无身份验证 --> 服务器 --> HTTP,摘要身份验证 --> 源)

问题是 wget/curl 在下载过程中立即写入文件(等待原始 HTTP 响应时,文件为 0 字节,持续数秒)。当客户端访问缓存文件时,我想为他们提供最新的缓存副本,而不是 0 字节文件或半完成的下载。

我尝试wget --backups 10使用 filename.1(代价是引入 1 个刷新周期的延迟),但它似乎不起作用-O并且没有保存任何副本(文件每次都会被覆盖)。

是否有更好的解决方案来提供最后的缓存副本?

相关内容