最流行的代理服务器根据 Uri 缓存响应数据? 另外,让我们排除 HTTP 标头(如 Cache-Control 等)...并假设它们已设置为公开、max-age:xxxx s-maxage:yyyyy 等...
那么...假设代理服务器说“此资源需要缓存”...“密钥”是什么?Uri 吗?
所以如果我有
- www.somedomain.com
- www.somedomain.com/foo
- www.somedomain.com/foo?
- www.somedomain.com/foo?a=1
- www.somedomain.com/foo?a=1&b=2
它们都是单独的缓存项目吗?
答案1
我的理解是,最常见的是它是与 URL 相关内容的哈希值,例如主机的名称/地址、路径,有时还有其他选项,例如 cgi 参数。 根据此常见问题解答,Squid 使用直 URL 的哈希和 HTTP 检索方法来识别缓存中已有的项目。
我认为您列出的 URL 在大多数情况下确实会导致创建单独的缓存项。
答案2
我熟悉乌贼。它肯定会将所有示例 URI 缓存为单独的对象。但请注意,完全可以配置 Squid 不缓存与某些模式匹配的 URI,例如包含?。
答案3
URL 绝对是缓存的关键参数。事实上,作为一名 Web 开发人员,防止缓存 Web 资源的一种方法是在 URL 末尾附加一个随机查询字符串。