我有一个连接到blob存储的Azure CDN(Verizon,premium)。根据此tutorial中的第6步,我有2条规则。这些规则旨在强制CDN在调用CDN的根目录时提供“index.html”。它们可能与问题相关,也可能不相关,但在步骤6中描述如下:
我最初将文件上传到blob存储,能够通过CDN点击它们(证明上述规则正常工作),然后对本地文件进行更改(调试)以便上传到blob存储。更新blob存储上的所有文件并选中“purge all”选项后手动清除CDN端点后,CDN将为旧文件提供服务,并在直接访问blob存储时提供新文件。这似乎发生在每个文件中(即使直接命中文件,而不仅仅是index.html)。等待~10小时后,仍然会发生这种情况,清除浏览器缓存,并尝试从未用过访问CDN的浏览器。
有谁知道可能会发生什么?它是否缓存在我的网络和CDN端点之间?我觉得我可能错过了很简单的事情......
编辑1:我有另一个Verizon(非高级)CDN连接到同一个存储容器,它在清除后获取正确的文件;然而,即使是现在(24小时后),优质CDN也没有提供更新的文件。
编辑2:称为Microsoft对Azure的支持,他们花了大约6个小时进行调查,但无济于事。我们最终再次尝试清除,现在正在发送更新的文件。仍不确定问题是什么。
答案 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配置文件->单击您的配置文件(“概述”部分)
该规则可能需要4个小时才能生效,对我来说大约是2个小时。
最后,对于此方法,规则的顺序应该无关紧要,但是对于上面的重写规则,请记住,规则确实允许您优先上下移动它们。对我来说,我有,Https首先重定向,URL重写(对于“ React-routing”)第二。最后,最后强制缓存刷新。
*注意:这是一个平衡,因为清除对我不起作用,您希望在发布后更新静态(应用程序/站点),但是您也不希望有大量不必要的流量来刷新缓存。对于我的开发服务器,我安顿了5分钟。我认为制作将需要1个小时...尚未决定。