避免从 raw.githubusercontent.com 获取缓存内容

tle*_*den 5 github

我注意到,当使用curl使用以下格式从github获取内容时:

https://raw.githubusercontent.com/${org}/${repo}/${branch}/path/to/file
Run Code Online (Sandbox Code Playgroud)

它有时会返回缓存/陈旧的内容。例如,使用以下操作序列:

  1. 卷曲https://raw.githubusercontent.com/${org}/${repo}/${branch}/path/to/file
  2. 将新提交推送到该分支
  3. 卷曲https://raw.githubusercontent.com/${org}/${repo}/${branch}/path/to/file

步骤 3 将返回与步骤 1 相同的内容,并且不反映新的提交。

如何避免获得过时的版本?

我在 Github WebUI 上注意到,它在 url 中添加了一个令牌,例如: ?token=AABCIPALAGOZX5R这可能会避免获取缓存的内容。这个令牌的本质是什么?我该如何模拟它?会继续?token=$(date +%s)工作吗?

另外,我正在寻找一种方法来避免过时的内容,而不必切换到网址中的提交哈希,因为它需要更多的更改。然而,如果这是实现这一目标的唯一方法,那么我就会走那条路。

bk2*_*204 0

GitHub 会缓存此数据,因为否则频繁请求的文件将涉及每次向后端服务提供请求,这比提供缓存副本的成本更高。使用 CDN 可提高性能和速度。你无法绕过它。

您在 URL 中看到的令牌是为登录用户颁发的临时令牌。您不能使用随机令牌,因为它无法通过身份验证。

如果您需要特定提交中该文件的版本,那么您需要显式指定该提交。但是,请注意,您不应该使用某种大规模自动化过程来执行此操作作为绕过缓存的方法。例如,您不应该尝试这样做来始终获取文件的最新版本,以用于您正在分发的程序或您正在运行的服务的多个实例。您应该自己提供该数据,必要时使用 CDN。这样,您可以自己决定缓存何时需要过期,并获得良好的性能和最新的数据。

如果您无论如何运行这样的过程,则可能会导致中断或过载,并且您的存储库或帐户可能会被暂停或阻止。