Varnish HitPass调试

标签 varnish varnish-vcl setcookie

我在我的一个站点上注意到一个问题,在该站点上,我的内容页面(不应设置任何cookie,都应返回具有最大使用期限的“Cache-Control:public”,并且不需要授权)。

我的问题是HitPass对象以某种方式将其放入我的缓存中,从而从该页面中删除了缓存。我需要调试它,但是对于如何最好地做到这一点感到困惑,特别是因为我无法复制问题。

我注意到 Varnish 在 Varnish 日志中的HitPass旁边给了我一个ID。我假设这是生成HitPass的请求的 Varnish ID,并且回溯到 Varnish 日志中会告诉我响应到底出了什么问题?

从我要缓存的页面中删除SetCookie header 会更好吗?问题是,即使传递了URL,也会调用vcl_fetch。是否有任何方法可以在vcl_fetch中判断vcl_recv是否传递了当前请求?

最佳答案

SetCookie 确实是您在缓存中获得命中传递对象的原因。这是对非准备站点的重要优化。一次命中将让 varnish 直接到达这些请求的后端,而不是拖延它们并等待前一个请求的响应。

我不确定您到底要调试什么。如果它是 set-cookie,您可能应该从后端删除它,或者制定自己的规则来缓存哪些内容或在缓存中忽略哪些内容。如果您仍然需要 set-cookie 并且它具有唯一值,那么命中传递是最好的方法。

关于 Varnish HitPass调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13865945/

相关文章:

wordpress - Varnish 未启动语法错误

caching - Varnish 在请求中混合用户代理

javascript - 在本地运行时从不同域删除 cookie

Varnish :缓存一些cookie

WordPress nginx 预览帖子是 404 未找到,但旧帖子正在工作

wordpress - Nginx和Varnish连接错误

Safari 11 X-XSRF-TOKEN 刷新后未更新

google-chrome - 什么网络错误可能导致状态(失败)并在 Chrome 中键入 Pending?

php - 使用 PHP 和 Varnish 的客户 header

ios - 设置Cookie并在post方法中使用它并在ios中的webview中加载