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

Does Github pages have a built in way of accessing and caching the latest release from the API?

通过 Github 页面学习 Jekyll 和托管杰基尔页面。我知道如何使用 AJAX:

使用访问令牌通过 Github API 访问数据
<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>

config.yml 中,我设置了 USERREPOTOKEN。我的研究确实找到了 Cache API but it isn't listed。使用 Github 页面作为主机并在 Jekyll 中编码是否有办法获取最新版本并将响应缓存在 Jekyll 的私有存储库中?如果我无法缓存 API 是否有办法将发布 URL 存储在 Jekyll 构建中,以便我可以将其编码到按钮中,以便按钮充当下载?

研究:

Github 页面没有内置的方式来访问和缓存 API 的最新版本。您似乎选择了 javascript 来获取数据。因此,缓存响应只会影响一个用户,而我认为这不是您所追求的。什么是可能的...

使用动态数据

您在 ajax 请求中获得 values/data,因此您可以将结果 real-time 写入所需页面。您可以将结果存储在本地存储中,以防止对该用户进行任何其他调用。

使用静态数据

您可以将 JSON 响应作为静态文件添加到 _data 文件夹。您可以手动执行此操作,然后遍历数据。

如果您不喜欢手动操作,您可以在 Jekyll 构建期间使用插件自动获取文件。

不幸的是,this plugin 仅适用于 public JSON 文件(目前没有身份验证可用)。您可能想自己添加身份验证,正如插件作者在他的 Github 页面上所建议的那样。

您还可以创建一个 PHP 页面来为您进行身份验证和数据缓存,using this PHP Github API。您只需让 PHP 在 public URL 上生成想要的 JSON data/output。那么上面提到的Jekyll插件无需任何调整就可以完美使用了。

自动化构建

从你的研究项目我可以看出你也想 automate/schedule 构建过程。一种简单的方法是使用 CloudCannon 平台上的计划构建功能。

Using Github Pages as the host and coded in Jekyll is there a way to get the latest release and cache the response on a private repo with Jekyll?

列出了仅允许与 GitHub 页面一起使用的 Jekyll 扩展 here:

  • 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

None 其中与您正在寻找的缓存或客户端功能相关,因此您必须采用不同的解决方案。

If I cannot cache the API is there a way to store the release URLs on the Jekyll build so I can code it to the buttons so the buttons act as a download?

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

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

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

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

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