wget 不保留缓存

wget 不保留缓存

我正在尝试运行托管在 github 上的远程 bash 脚本:

wget -O - https://raw.githubusercontent.com/xxxxx/script.sh

一切运行良好,没有问题

但是当我更新上面的脚本并运行相同的命令时,它会处理旧脚本

我尝试过--no-cache,,--delete-after但没有成功

如何每次获取 wget 的最新副本?

答案1

raw.githubusercontent.com正在使用 CDN,您可以通过以下方式检查:

$ dig raw.githubusercontent.com +short
github.map.fastly.net.
1.2.3.4

因此,如果该 CDN 强制执行基于 TTL 的缓存(通过检查 300 秒的标头,似乎确实如此Cache-Control),那么您就只能继续使用它。正如您所看到的,使用 进行询问--no-cache不会产生任何效果,因为这就是设计用来防止滥用的方式。

你可以在许多情况下绕过它黑客方法,我不会列出,但你基本上是在试图规避 github 制定的政策,我建议不要这样做。此外,今天有效的方法可能在明天或后续调用中以编程方式不起作用。

所以..只需等待 TTL 过期并获取新副本。

您可以编写一个脚本,每隔 x 秒轮询一次(但不要太快),然后等待,直到您看到X-Cache: MISS- 它会告诉您获得了新副本。或者检查ETag是否有更改。

或者你可以检查 github 是否为你提供了一个 API 来使你自己的代码无效,或者提供了一种调用最新提交的文件的方法,例如:https://raw.githubusercontent.com/xxxxx/script.sh?commit=12345

相关内容