You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
当我构建这个博客的新版本时,我使用了 GitHub Discussions API 提供的
bodyHTML
来提高性能。 一开始一切都很顺利,但是当我为内容设置缓存时,图像全部损坏了。 我发现private-user-images.githubusercontent.com
可能导致了这个问题。 这篇博客将介绍我是如何处理的。[desc_end]
破碎的图像
我为 API 设置了缓存,以提高性能并避免额外请求。起初,我将最大时长设置为 60 * 60,即一个小时。然而,大约过了 5 分钟,文章中的所有图片都坏了。当我在浏览器中打开开发人员面板时,我发现这些图片的源 URL 并不是原始 URL。
在讨论正文的编辑器中,我的图片 URL 是:
然而,当应用程序接口将其渲染为 HTML 时,它却变成了:
URL 变得超长,其中包含一个令牌,源域名变成了
private-user-images.githubusercontent.com
。我发现令牌是JWT
格式的(查询密钥也提到了这一点)。JWT 解码
好吧,让我们从
?jwt=
中找出答案。打开 https://jwt.io/ ,将完整的 Token 粘贴到
Encoded
中。然后,我们可以发现
payload
中有一些有用的信息。例如,
exp
表示过期时间,nbf
表示在此之前无效。因此,我们可以推断图片的过期时间为 5 分钟。因为我们一开始设置的是一小时缓存,所以过了最初的 5 分钟后,图片将不可用。
解决方案
我们可以将缓存设置为 5 分钟,以避免过期。这样就可以了,这也是解决这个问题最简单的方法。
我们还可以使用 API 获取正文,以返回原始标记符格式的正文。然后,我们需要匹配并获取所有源图像的 URL 以替换它们(尽管这不是一个好主意)。
或者,我们可以自己渲染 markdown 内容,或者调用
api.github.com
上的/markdown
API。Beta Was this translation helpful? Give feedback.
All reactions