Varnish 清漆缓存第一次命中

Varnish 清漆缓存第一次命中,varnish,Varnish,我在专用服务器上运行varnish。当我加载一个页面时,它是通过Apache传递的,在第二次和后续的点击中,它是通过Varnish缓存传递的(即,我可以在X-Varnish头中看到两个时间戳) 但是当我从其他计算机上打开同一个页面时,它还是第一次从后端(apache)交付,并且在进一步重新加载时,它来自Varnish 如果页面已经在Varnish缓存中,那么即使是第一次在新计算机上,它也不应该通过Varnish交付吗?我尝试过简单的helloworld php文件,没有任何数据库调用,效果也一样

我在专用服务器上运行varnish。当我加载一个页面时,它是通过Apache传递的,在第二次和后续的点击中,它是通过Varnish缓存传递的(即,我可以在X-Varnish头中看到两个时间戳)

但是当我从其他计算机上打开同一个页面时,它还是第一次从后端(apache)交付,并且在进一步重新加载时,它来自Varnish


如果页面已经在Varnish缓存中,那么即使是第一次在新计算机上,它也不应该通过Varnish交付吗?我尝试过简单的helloworld php文件,没有任何数据库调用,效果也一样。我的vcl文件可能有问题,或者Varnish仅以这种方式工作?

检查是否发送会话数据(cookies),这些数据看起来像是对Varnish的唯一调用。这些文档向您展示了如何剥饼干。

乔恩是对的。我也有类似的问题。您还需要在测试之前清理cookie和缓存。检查第一次访问响应头是否尝试设置cookie。如果是这样,您可以在vcl_fetch下执行“unset beresp.http.Set-Cookie”