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

我注意到当使用 curl 从 github 获取内容时使用这种格式:

https://raw.githubusercontent.com/${org}/${repo}/${branch}/path/to/file

它有时会返回缓存/过时的内容。例如这个操作序列:

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

第 3 步将返回与第 1 步相同的内容,但不反射(reflect)新的提交。

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

我在 Github WebUI 上注意到,它向 url 添加了一个 token ,例如:?token=AABCIPALAGOZX5R,这大概可以避免获取缓存内容。这个 token 的性质是什么,我该如何模拟它?添加 ?token=$(date +%s) 行吗?

我也在寻找一种方法来避免陈旧的内容,而不必切换到 url 中的提交哈希,因为它需要更多的更改。但是,如果这是实现它的唯一方法,那么我会走那条路。

最佳答案

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

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

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

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

https://stackoverflow.com/questions/64792450/

相关文章:

node.js - Kubernetes Crashloopbackoff 与 Minikube

html - 使用 selenium 抓取网页时缺少 HTML 内容

ios - Swift 2.0 .contextMenu 从核心数据中多次删除

perl - 我怎样才能确保函数永远不会在 perl 中同时执行?

android - 在 Dart 上将相机从一个屏幕传递到另一个屏幕

elasticsearch - FluentBit 和 ES 的重复和缺失日志条目

laravel - 作业处理后留在待定列表中

angular - 生成 Angular 库时的循环依赖

javascript - 如何使 vuetify 复选框仅在单击框而不是标签时使用react?

angular - 从 - "createAction"函数获取类型