带有查询字符串的Azure CDN缓存



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

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

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

知道为什么会发生这种事吗?谢谢

正如文档中所述,最有可能的情况是查询的使用使用了缓存资产

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

所以我的猜测是缓存的资产还没有到期。为了避免这个问题,您应该考虑绕过查询字符串的缓存:

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

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

最新更新