问题描述
尽管文档中提到了以下内容,但我不知道“忽略查询字符串”和“绕过查询字符串缓存”在实践中的确切区别。
来自doc:
忽略查询字符串:默认模式。在这种模式下,CDN 存在点 (POP) 节点在第一次请求时将查询字符串从请求者传递到源服务器并缓存资产。从 POP 提供的对资产的所有后续请求都会忽略查询字符串,直到缓存的资产到期。
对查询字符串绕过缓存:在这种模式下,带有查询字符串的请求不会缓存在 CDN POP 节点上。 POP 节点直接从源服务器检索资产,并在每次请求时将其传递给请求者。
如果我的网址是:mydomain.com/articles?page=3
。这是否意味着页面查询字符串在这两种情况下都被简单地忽略了。在这种情况下会有什么不同?
解决方法
忽略查询字符串
第一个请求被转发到源服务器,响应被缓存。无论查询字符串是什么,以下请求都从缓存中提供。
Request1:
Browser (mydomain.com/articles?page=3) -> Azure CDN -> Server (mydomain.com/articles?page=3)
Request2:
Browser (mydomain.com/articles?page=42) -> Azure CDN (from cached whatever the query string)
Request3:
Browser (mydomain.com/otherpage?page=3) -> Azure CDN -> Server (mydomain.com/otherpage?page=3)
绕过查询字符串缓存
Azure CDN 不会缓存具有查询字符串的请求
Request1:
Browser (mydomain.com/articles?page=3) -> Azure CDN -> Server (mydomain.com/articles?page=3)
Request2:
Browser (mydomain.com/articles?page=3) -> Azure CDN -> Server (mydomain.com/articles?page=3)
缓存每个唯一的 URL
Request1:
Browser (mydomain.com/articles?page=3) -> Azure CDN -> Server (mydomain.com/articles?page=3)
Request2:
Browser (mydomain.com/articles?page=3) -> Azure CDN (from cache)
Request3:
Browser (mydomain.com/articles?page=42) -> Azure CDN -> Server (mydomain.com/articles?page=42)