azure-storage - 使用查询字符串进行 Azure CDN 缓存

标签 azure-storage azure-caching azure-cdn

我对目前使用 Azure CDN 遇到的问题感到好奇,但没有答案。因此,我有一个 CDN 配置文件和端点,配置为缓存存储在存储容器中的一些内容。在缓存行为中,我使用默认值(忽略查询字符串)。因此,我修改了容器中的一个文件,并且能够从容器中检索修改后的文件,但不能从 CDN 边缘检索,因为边缘返回文件的前一个缓存版本。因此,我继续清除 CDN 中的文件,清除后,我能够获得文件的修改版本。但是,如果我使用任何查询字符串参数向 cdn 边缘请求文件,我会得到文件的原始版本,而不是文件的修改版本。

通过边缘请求文件的示例:

没有qs:https://#storage_account#/#file_path#/hh.min.css -> 它给了我修改后的版本
w qs:https://#storage_account#/#file_path#/hh.min.css?v=0.5 -> 它给了我原始版本
w qs (2): https://#storage_account#/#file_path#/hh.min.css?a=b -> 它给了我原始版本

知道为什么会发生这种情况吗? 谢谢。

最佳答案

最有可能发生的情况是查询使用了缓存的资源,如 documentation 中所述。

忽略查询字符串:默认模式。在此模式下,CDN 存在点 (POP) 节点在第一个请求时将查询字符串从请求者传递到源服务器并缓存 Assets 。对该 Assets 的所有后续请求从 POP 提供的服务将忽略查询字符串,直到缓存的资源过期。

所以我的猜测是缓存的资源尚未过期。为了避免此问题,您应该考虑绕过查询字符串的缓存:

绕过查询字符串缓存:在此模式下,带有查询字符串的请求不会在 CDN POP 节点缓存。 POP 节点直接从源服务器检索 Assets ,并在每次请求时将其传递给请求者。

如果上述选项导致延迟,我建议调整缓存规则。

关于azure-storage - 使用查询字符串进行 Azure CDN 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51421160/

相关文章:

java - Azure + SpringBoot 'com/fasterxml/jackson/core/JsonFactory'

Azure 角色内共置缓存 : There is a temporary failure

azure - Azure CDN 中的免费规则

azure - 将 Azure CDN 与共享访问签名结合使用

Azure 表 : best practices for choosing partition/row keys

c# - 超出一定数量的实体后,Azure 表存储上的查询不起作用?

azure - 安装 ServiceStack.Caching.Azure 时 NuGet 无法解析依赖项

Azure CDN 规则引擎添加默认文档(站点请求的文件除外)

azure - 在 Azure 存储中使用 CORS 来防止文件被非法访问

caching - azure appfabric 缓存写入后面功能