我已经在Azure中创建了CDN,并且正在构建一个.NET MVC Web应用程序,该应用程序能够将映像上传到CDN。
初始上传效果很好,上传后即可立即使用图片。
如果我再次上传不同的图像,它不会立即从Web应用程序更新。但是,在我的Azure门户中,我可以打开存储帐户容器并立即看到新文件。
无论我刷新或重新启动Web应用程序多少,它都不会在更新图像上传后5-10分钟内看到图像。
在我看来,这与Azure中的CDN缓存有关。在过去的几个小时中,我一直在寻找解决方案,而且似乎没有关于此特定问题的在线文档(这很奇怪,我是第一个遇到此问题的人,对吗?)。 / p>
此外,在Azure的CDN端点中的缓存规则下,我只能看到一个下拉菜单,而不是网上其他地方看到的众多选项,而且这些选项似乎都不允许我禁用缓存。
那么,如何使更新的图像立即显示?
谢谢!
编辑:
以下是目前对我有用的解决方案:
使用GUID作为名称创建所有图像。用户上载新图像时,请删除旧图像,然后使用其他GUID上载新图像。由于它们的名称不同,因此CDN缓存不会受到干扰。
答案 0 :(得分:1)
根本不是一个普遍的问题。
在端点的缓存规则中检查查询字符串缓存行为的值。如果您在使用查询字符串参数的URL上提供上载的图像,请配置缓存以缓存每个唯一的url(而不是绕过或忽略查询字符串选项)。将此视为值是图像二进制值的关键。
下一步,检查源服务器是否提供了您期望的HTTP标头(到期,最大使用期限,etag和缓存控制),并且它们具有适合您的内容的值。
还要研究清除API。如果您的初始资源位于CDN中,并且如果用户的上传内容会创建相同的密钥,则可能需要调用清除API。
HTH
答案 1 :(得分:0)
您可能正面临浏览器缓存。您可以使用 STRG + F5 或使用其他浏览器重新加载站点和缓存,以确保在CDN中更新映像。
一种解决方案是向图像添加查询参数。例如https://yourdomain/storage/tmp.img?version=1234
然后,您可以更新版本,这将迫使浏览器重新加载图像(但这将需要重新部署您的应用程序)。