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 中,我设置了 USER
、REPO
和 TOKEN
。我的研究确实找到了 Cache API but it isn't listed。使用 Github 页面作为主机并在 Jekyll 中编码是否有办法获取最新版本并将响应缓存在 Jekyll 的私有存储库中?如果我无法缓存 API 是否有办法将发布 URL 存储在 Jekyll 构建中,以便我可以将其编码到按钮中,以便按钮充当下载?
研究:
- Download latest GitHub release
- First Steps with the Cache API
- How to force GitHub Pages build?
- Is there a link to GitHub for downloading a file in the latest release of a repository?
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
检查它是否已更改
- 提交并推送到默认分支,这将触发站点的发布
我没有任何示例来说明这一点,但如果您想进一步探索,还有其他资源。
通过 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 中,我设置了 USER
、REPO
和 TOKEN
。我的研究确实找到了 Cache API but it isn't listed。使用 Github 页面作为主机并在 Jekyll 中编码是否有办法获取最新版本并将响应缓存在 Jekyll 的私有存储库中?如果我无法缓存 API 是否有办法将发布 URL 存储在 Jekyll 构建中,以便我可以将其编码到按钮中,以便按钮充当下载?
研究:
- Download latest GitHub release
- First Steps with the Cache API
- How to force GitHub Pages build?
- Is there a link to GitHub for downloading a file in the latest release of a repository?
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 检查它是否已更改
- 提交并推送到默认分支,这将触发站点的发布
我没有任何示例来说明这一点,但如果您想进一步探索,还有其他资源。