同一个 403 页面出现两次并不能证明命中了缓存。把该事务的访问记录与响应头对照两个问题:拒绝由谁产生,以及是否复用了已存储的响应?

  • 本地拒绝的请求需要修正其访问规则或身份判定。
  • 来自源站的新拒绝意味着源站仍然拒绝该请求。
  • 被复用的源站响应需要检查其鲜度策略和适用的缓存配置。

HTTP 缓存在其条件下会包含某些否定响应,但 403 默认不会获得启发式鲜度。原本可缓存的拒绝可以带有明确的共享缓存生存期。更改源站的权限并不会抹去仍被视为新鲜的响应;对于不应存储的判定,请使用合适的响应策略。

Squid 的 negative_ttl 是针对某些过期时间未知的失败请求的单独回退项。在当前指令参考所覆盖的版本中,其文档记录的默认值为零。这并不禁止由明确 HTTP 指令刷新为新鲜的错误响应。

该参考还要求构建允许 HTTP 违规,并排除 Squid 8。不要在未确认支持的情况下把 Squid 2.7 的生存期建议套用到其他版本。删除对象可以消除眼前症状;而使其可被复用的策略才决定下一次请求。

相关文章