如何在GitHub上强制更新README.rst中的图像(缓存)

64
在我的一个项目中,我使用外部图像链接通过GitHub页面显示屏幕截图,该页面会自动解析README.rst文件。 ROyWeb的GitHub页面 在过去的几周里,我多次在我的Web服务器上更新了这个屏幕截图,但我刚刚意识到自从...以来,在GitHub页面上它没有被更新;GitHub以某种方式下载了该图像并从其缓存服务器加载它。
在README.rst文件中,明确指出了正确的链接: ROyWeb屏幕截图的实际链接 当您加载原始文件时,可以确认此链接: GitHub上的原始README.txt 但是,当我检查GitHub页面上显示的图像的URL时,我得到:

GitHub ROyWeb的缓存截图

有人知道如何强制进行“重新缓存”吗?


我也很想知道这个答案。 - b85411
2
请给问题 @b85411 点个赞吧 ;) - tamasgal
4个回答

89
curl -X PURGE {url of cached badge image}

5
这对我不起作用。有其他方法吗?我的自述文件(readme)里缺少很多图像(主要是shields.io徽章)。这是一个已知的错误吗?有没有可能修复它? - orome
6
@MichaelAquilina 我不知道他是如何发现的,但 Github 在这里提到了它(https://help.github.com/articles/about-anonymized-image-urls/#removing-an-image-from-camos-cache)。 - 张实唯
5
确实有效!如果对你无效,请按住Ctrl键并单击刷新,你可能从自己的缓存中获取图片(我也不得不这样做)。 - BenMorel
1
请确保使用Ctrl-Shift-R刷新页面以清除浏览器缓存。 - makeworld
1
今天这个方法突然就不能用了(我几乎每天都在用),返回“访问此网站已被限制”。我试着加入一个API令牌 - 结果一样。但最终图片确实刷新了,也许现在不需要添加令牌了? - Mike Honey
显示剩余6条评论

22

还有一个可能会有用的技巧。那就是在图片扩展名的末尾加上一个问号。

![This is an automated blog post image using Azure Function](https://customurl.blob.core.windows.net/github/latestpost.png?)

在末尾看到了问号(?) 。您还可以在我的GitHub个人资料中查看实时示例。

您可以在此处了解更多信息。


2
你很棒! - unobatbayar
1
基于 @Sibeesh Venu - NoahVerner
1
这应该是最好的答案! - Míng
这似乎对第一个请求有效,但如果您更新了图像,则在后续的请求中不会更新。 - Tim Ramsey

7
我看了一下 shields.io 的功能。
它设置了这个头部 (来源):
Cache-Control: max-age=2592000

2
我之前在这里看到过这个想法(https://github.com/github/markup/issues/224),但不知道如何使用原始URL的语法。通过你提供的第二个链接,我学会了如何做。谢谢。 - Mars

2

我相信我现在已经理解了如何做到这一点。例如,不要提供原始的png文件,而是通过php文件提供图像(在stackoverflow上有很多例子)。

当您使用PHP显示图像时,请添加以下标头:

header('Cache-Control: no-cache');
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() - 36000));

通过设置no-cache并将缓存过期时间设置在过去,我发现GitHub的CDN在每次刷新时都会自动更新图像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接