46

在我的一个项目中,我使用外部图像链接通过 GitHub 页面显示屏幕截图,该页面会自动解析 README.rst

ROyWeb 的 GitHub 页面

在过去的几周里,我在我的网络服务器上多次更新了这个截图,我只是意识到它没有在 GitHub 页面上更新,因为......我认为它从未更新过 ;-) GitHub 以某种方式下载了图像并从它的缓存服务器。

在 README.rst 中,显然有正确的链接:

ROyWeb 截图的实际链接

当您加载原始文件时,您可以确认:

GitHub 上的原始 README.txt

但是当我检查 GitHub 页面上显示图像的 URL 时,我得到:

ROyWeb 的 GitHub 缓存截图

有谁知道如何强制“重新缓存”?

4

4 回答 4

74
curl -X PURGE {url of cached badge image}
于 2016-05-03T09:41:29.663 回答
8

还有一个有用的技巧。它只是在图像扩展的末尾添加一个问号。

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

请参阅末尾的问号 (?)。您还可以在我的GitHub 个人资料中查看现场示例。

您可以在此处查看有关此内容的更多信息。

于 2021-02-03T15:20:59.227 回答
3

我看看shields.io做了什么。

它设置此标头(Source):

Cache-Control: max-age=2592000
于 2017-03-31T09:44:59.780 回答
2

我相信我现在已经明白如何做到这一点了。例如,不是提供原始 png 文件,而是通过 php 文件提供图像(SO 上有许多示例)。

使用 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 会在每次刷新时自动更新图像。

于 2015-01-12T00:59:53.473 回答