在Windows Azure CDN中更新文件
我有blob存储和CDN端点,它存储我的静态内容。 现在我想更新app.js文件,因为它已被修改,但是当我将此文件写入blob时,CDN仍然给我旧的app.js文件。 我怎样才能更新我的app.js文件? 或者我必须等到我的缓存不会结束?
问题在很久以前就被问到了。 我只想更新对我有用的方法。 它由微软推荐。 本质上,您需要在Blob存储中设置缓存控制标题。 您可以设置值为“public,max-age = 3600”的缓存控制标题。 这会将您的文件缓存约1小时。
https://azure.microsoft.com/en-us/documentation/articles/cdn-manage-expiration-of-blob-content/
CDN很简单。 当请求进入时,它会从源(本例中为blob存储)中获取内容,然后根据Cache-Control
头将其Cache-Control
一段时间。 它将继续提供相同的内容,直到缓存过期。
没有办法告诉CDN尽早过期。
其他人可能会提供更多关于如何处理此问题的有用建议(如查询字符串参数),但我只是想简单解释CDN的缓存如何工作。
只是你无法在缓存对象到期之前更新缓存对象。
从https://msdn.microsoft.com/en-us/library/azure/gg680303.aspx:
如果不再希望在Azure内容分发网络(CDN)中缓存对象,则可以执行以下步骤之一:
对于Azure blob,您可以从公共容器中删除blob。
您可以将容器设为私有而不是公开的。 有关更多信息,请参阅限制对容器和Blob的访问。
您可以使用Azure管理门户来禁用或删除CDN端点。
您可以修改托管服务以不再响应对象的请求。
已经缓存在CDN中的对象将保持缓存直到对象的生存时间到期。 当生存时间到期时,CDN将检查CDN端点是否仍然有效,并且该对象仍可匿名访问。 如果不是,则该对象将不再被缓存。
目前Azure CDN没有明确的“清除”工具。
如果可能,其他解决方法包括使用假查询字符串或新文件名。 看到这里:https://stackoverflow.com/a/8773202/908336