azure cdn purge不刷新缓存的内容

时间:2017-07-12 02:11:22

标签: azure azure-blob-storage azure-cdn

我有一个连接到blob存储的Azure CDN(Verizon,premium)。根据此tutorial中的第6步,我有2条规则。这些规则旨在强制CDN在调用CDN的根目录时提供“index.html”。它们可能与问题相关,也可能不相关,但在步骤6中描述如下:

  1. 确保下拉列表显示“IF”和“Always”
  2. 点击“功能”旁边的“+”按钮两次。
  3. 将两个新创建的下拉菜单设置为“URL Rewrite”
  4. 将所有源和目标下拉列表设置为您创建的端点(带端点名称的值)
  5. 为第一个源模式,设置为((?:[^ \?] /)?)($ | \?。
  6. 表示第一个目的地模式,设置为$ 1index.html $ 2
  7. 对于第二个源模式,设置为((?:[^ \?] /)?[^ \?/。] +)($ | \?。
  8. 表示第二个目标模式,设置为$ 1 / index.html $ 2
  9. 我最初将文件上传到blob存储,能够通过CDN点击它们(证明上述规则正常工作),然后对本地文件进行更改(调试)以便上传到blob存储。更新blob存储上的所有文件并选中“purge all”选项后手动清除CDN端点后,CDN将为旧文件提供服务,并在直接访问blob存储时提供新文件。这似乎发生在每个文件中(即使直接命中文件,而不仅仅是index.html)。等待~10小时后,仍然会发生这种情况,清除浏览器缓存,并尝试从未用过访问CDN的浏览器。

    有谁知道可能会发生什么?它是否缓存在我的网络和CDN端点之间?我觉得我可能错过了很简单的事情......

    编辑1:我有另一个Verizon(非高级)CDN连接到同一个存储容器,它在清除后获取正确的文件;然而,即使是现在(24小时后),优质CDN也没有提供更新的文件。

    编辑2:称为Microsoft对Azure的支持,他们花了大约6个小时进行调查,但无济于事。我们最终再次尝试清除,现在正在发送更新的文件。仍不确定问题是什么。

4 个答案:

答案 0 :(得分:7)

在与Microsoft和Verizon数字媒体支持部门合作数周之后,他们终于找到了解决方案。

为了避免干扰清除过程,最简单的方法是实现以下" IF"在"特征"之前的陈述你的规则的一部分:

IF |请求标头通配符|名称|用户代理|不匹配|值| ECPurge / * |忽略大小写(已选中)

对于使用清除用户代理发出的请求,此if语句将完全跳过此规则,允许请求正常命中CDN。

答案 1 :(得分:1)

我还发现你是否单独清除每个文件,例如,在清除时将/css/main.css放在'内容路径'中而不是'清除所有'它将起作用

答案 2 :(得分:0)

现在一切正常吗? 我看到你的规则可能比你需要的更复杂。如果目标只是将“/”重写为/index.html,则这是您需要的唯一规则:

总是如此 URL重写 - 来源:“/”;目的地“/index.html”

答案 3 :(得分:0)

2019/10/14-使用类似的设置(Azure CDN / Blob-Static-Site / Verizon),我也遇到了缓存问题。我碰巧只有1个URL重写规则。对我来说解决的是设置有关缓存/最大年龄的后续规则。

这是我的做法: Azure门户-> CDN配置文件->单击您的配置文件(“概述”部分)

  1. 单击“概述”(在详细信息部分/刀片中)中的管理图标。这应该 打开疯狂的Verizon页面。
  2. 将鼠标悬停在“ Http Large”上,然后单击“规则引擎”
  3. 在文本框中输入名称/描述。例如:“强制缓存刷新”
  4. 保留是否/始终选择
  5. 点击“功能”旁边的“ +”按钮
  6. 在出现的新下拉列表中,选择“强制内部最大年龄”(保留200作为响应)
  7. 在字段中输入一个合理的*值,持续几秒钟。 (例如300)
  8. 点击黑色的添加按钮

该规则可能需要4个小时才能生效,对我来说大约是2个小时。

最后,对于此方法,规则的顺序应该无关紧要,但是对于上面的重写规则,请记住,规则确实允许您优先上下移动它们。对我来说,我有,Https首先重定向,URL重写(对于“ React-routing”)第二。最后,最后强制缓存刷新。

*注意:这是一个平衡,因为清除对我不起作用,您希望在发布后更新静态(应用程序/站点),但是您也不希望有大量不必要的流量来刷新缓存。对于我的开发服务器,我安顿了5分钟。我认为制作将需要1个小时...尚未决定。