【问题标题】:Trouble getting Varnish to cache无法让 Varnish 缓存
【发布时间】:2014-02-13 15:41:40
【问题描述】:

我们正在托管一个大型网球锦标赛网站,并尝试在 Rackspace 上使用 Varnish 来帮助我们预期的流量。我们也聘请了系统顾问来帮助在我们的云服务器上安装 Varnish,但无论出于何种原因,他们都无法让 Varnish 与我们的脚本一起使用。一个典型的脚本可以在这里找到:

162.242.140.232/scoring/DemoGetOOP.php

这个脚本没有什么特别之处。它在标头中没有任何特殊的缓存命令,并且不使用会话控制。您可以通过我们用于测试目的底部的日期/时间看到该页面没有被缓存。我们设置了一个缓存的计时器页面:

162.242.140.232/scoring/timer.php

还有一个 info.php 页面:

162.242.140.232/scoring/info.php

奇怪的是,如果你首先访问 timer.php,你可以看到它被缓存了 10 秒。但是,如果您随后运行我们的 DemoGetOOP.php 脚本并返回 timer.php,它就不再被缓存。我们必须再次清除缓存或打开私人浏览器窗口才能看到缓存。

if (req.url ~ "^/scoring/DemoGetOOP.php") 和

if (req.url ~ "/scoring/DemoGetOOP.php")

任何帮助将不胜感激!

  • S

【问题讨论】:

    标签: caching varnish varnish-vcl


    【解决方案1】:

    首先,我将从设置正确的缓存标头开始,我更喜欢 Cache-Control 标头。 DemoGetOOP 脚本还发送一个 cookie,Varnish 将通过该 cookie 传递缓存。

    我建议检查 varnishlog,它可以让您清楚地了解 Varnish 决定缓存或不缓存的原因。

    【讨论】:

      【解决方案2】:

      它们对我来说似乎运行良好,第一个链接的 ttl 为 120 秒,第二个链接的 ttl 为 10 秒,两者都运行良好。

      我想说,当事情似乎无法正常工作时,请务必仔细检查 cookie。

      【讨论】:

      • 嗨,当我们点击 URL 时:162.242.140.232/scoring/DemoGetOOP.php 它没有缓存。每次我们从任何浏览器刷新页面时,我们都可以在脚本底部看到刷新时间。它设置为每 10 秒缓存一次,因此只有在 10 秒后点击页面时才会刷新时间。你看到了什么不同的东西吗?
      • 是的,我的缓存很好,你的浏览器可能有一个 cookie,所以请求被传递到后端,在私人窗口或隐身窗口中尝试该站点
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2011-10-27
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      相关资源
      最近更新 更多