在Windows Azure CDN中更新文件

时间:2012-09-21 10:59:43

标签: cdn azure-storage

我有blob存储和CDN端点,用于存储我的静态内容。 现在我想更新app.js文件,因为它被修改了,但是当我把这个文件写入blob时,CDN仍然给了我旧的app.js文件。如何更新我的app.js文件?或者我必须等到我的缓存不会结束?

6 个答案:

答案 0 :(得分:2)

很久以前就提出了问题。我只想更新对我有用的方法。它由微软推荐。基本上,您需要在Blob存储中设置缓存控制头。您可以使用值" public,max-age = 3600"设置缓存控制标头。这将缓存您的文件大约1小时。

https://azure.microsoft.com/en-us/documentation/articles/cdn-manage-expiration-of-blob-content/

答案 1 :(得分:1)

CDN很简单。当请求进入时,它从源(在这种情况下,blob存储)中获取内容,然后根据Cache-Control标头将其缓存一段时间。它将继续提供相同的内容,直到缓存过期。

没有办法告诉CDN提前过期。

其他人可能会提供更多有用的建议来解决这个问题(比如查询字符串参数),但我只是想简单解释一下CDN的缓存是如何工作的。

答案 2 :(得分:1)

只是您无法在缓存对象到期之前更新它。

来自https://msdn.microsoft.com/en-us/library/azure/gg680303.aspx

  

如果您不再希望在Azure Content Delivery Network(CDN)中缓存对象,则可以执行以下步骤之一:

     
      
  • 对于Azure blob,您可以从公共容器中删除blob。

  •   
  • 您可以将容器设为私有而非公开。有关详细信息,请参阅限制对容器和Blob的访问。

  •   
  • 您可以使用Azure管理门户禁用或删除CDN端点。

  •   
  • 您可以修改托管服务,使其不再响应对象请求。

  •   
     

在CDN中缓存的对象将保持缓存状态,直到对象的生存时间到期为止。当生存时间到期时,CDN将检查CDN端点是否仍然有效并且对象仍然是匿名可访问的。如果不是,则不再缓存该对象。

     

Azure CDN目前没有明确的“清除”工具。


其他解决方法包括使用伪查询字符串或新文件名(如果可能)。见这里:https://stackoverflow.com/a/8773202/908336

答案 3 :(得分:0)

现在这样做的唯一方法是联系Azure支持,他们将依次打开Verizon EdgeCast的支持请求,从CDN中删除该文件,此时它将更新。整个过程大约需要8个小时才能完成基本的Azure支持计划。这不是一个很好的解决方案,我真的希望他们将此更新到我们可以通过编程方式从CDN清除某些内容的地方。这似乎是他们缺乏的基本功能。我认为你最好的选择是启用查询字符串状态,然后在更新时更新该查询字符串。我们为js文件这样做,如/js/custommix.js?version=1。然后,当我们需要更新它们时,我们会从配置中添加一个新版本。

http://azure.microsoft.com/en-us/blog/best-practices-for-the-windows-azure-content-delivery-network/

如何清除或使Windows Azure CDN中的内容无效?

从1.4开始,没有可用的清除功能。此功能正在开发中。最好的新鲜度控制是设置好的缓存过期标头,如本文档和MSDN上的Windows Azure CDN文档中所述。

答案 4 :(得分:0)

您可以从Azure新管理门户清除内容。

答案 5 :(得分:-1)

默认的到期时间似乎为7天。

来自:http://msdn.microsoft.com/en-us/library/azure/gg680306.aspx

  

Azure CDN缓存中受益最多的Blob就是那些   在他们的生存时间(TTL)期间经常访问。一个blob   保留在TTL周期的缓存中,然后由刷新   经过那段时间后的blob服务。然后重复该过程。

     

您有两种控制TTL的选项:

     
      
  1. 请勿使用7天的默认TTL设置缓存值。

  2.   
  3. 在Put Blob,Put上显式设置x-ms-blob-cache-control属性   阻止列表或设置Blob属性请求,或使用Azure托管   用于设置BlobProperties.CacheControl属性的库。设置这个   property设置blob的Cache-Control标头的值。该   标头或属性的值应指定适当的值   很快。例如,将最大缓存周期设置为1   年,您可以将请求标头指定为x-ms-blob-cache-control:   public,max-age = 31556926。有关设置缓存标头的详细信息,请参阅   HTTP / 1.1规范。

  4.