Github页面是否具有访问和缓存来自API的最新版本的内置方式?

Dᴀʀ*_*ᴅᴇʀ 7 caching jekyll github-api github-pages repo

学习Jekyll并通过Github Pages进行托管我想弄清楚如何访问私有仓库的最新版本并将下载URL缓存到Jekyll页面。我知道如何通过Github API使用访问令牌使用AJAX访问数据:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script language="javascript" type="text/javascript">  

  let USER = "grim"
  let REPO = "foobar"
  let TOKEN = "jsfjksgfjasgdjgsajgasjk"
  $.ajax({
    url: `https://api.github.com/repos/${USER}/${REPO}/releases/latest?access_token=${TOKEN}`,
    jsonp: true,
    method: "GET",
    dataType: "json",
    contentType: 'application/json',
    success: function(res) {
      console.log(res.assets)
    },
    error: function(res) {
      console.log(res)
    }
  })
</script>
Run Code Online (Sandbox Code Playgroud)

config.yml中,我设置USERREPOTOKEN。我的研究确实找到了Cache API,但未列出。使用Github Pages作为主机并在Jekyll中进行编码,是否有办法获取最新版本并使用Jekyll将响应存储在私有仓库中?如果我无法缓存API,是否可以在Jekyll构建中存储发布URL,因此可以将其编码到按钮上,以便按钮充当下载内容?

研究:

Bre*_*ter 0

使用 Github Pages 作为主机并在 Jekyll 中编码,有没有办法获取最新版本并使用 Jekyll 将响应缓存在私有存储库上?

此处列出了仅允许与 GitHub Pages 一起使用的 Jekyll 扩展:

  • jekyll-coffeescript
  • jekyll-default-layout
  • jekyll-gist
  • jekyll-github-metadata
  • jekyll-optional-front-matter
  • jekyll-paginate
  • jekyll-readme-index
  • jekyll-titles-from-headings
  • jekyll-relative-links

这些都与您正在寻找的缓存或客户端功能无关,因此您必须采用不同的解决方案。

如果我无法缓存 API,是否有办法在 Jekyll 构建上存储发布 URL,以便我可以将其编码到按钮中,以便按钮充当下载?

由于 GitHub Pages 没有与您的用例匹配的缓存 API,您可以通过对站点进行以下更改来回退到服务器端渲染:

  • 在 Jekyll 站点中创建一个数据文件,用于存储当前发布的资产(存根 URL 以暂时简化测试)
  • 更新站点以使用此数据文件并呈现 HTML(而不是使用客户端 JS)

然后,您可以创建一个定期运行的GitHub Action来执行此工作流程:

  • 使用有权访问私有存储库的令牌,查询最新版本
  • 以编程方式重写磁盘上的文件以使用相同的值
  • 使用 Git 检查它是否已更改
  • 提交并推送到默认分支,这将触发站点的发布

我没有任何示例来说明这一点,但如果您想进一步探索这一点,还有其他资源。