【问题标题】:Varnish caching too much files and not caching phpVarnish缓存太多文件而不缓存php
【发布时间】:2011-09-09 05:06:28
【问题描述】:

我在使用 Varnish 时没有触及任何配置(只是将 PORT 转发到 Apache 到 8080)。

但我有两个问题:

  • 我访问了一个图像的 URL,我删除了该图像,然后我再次访问它并且它存在...... Varnish 缓存了它......如果文件至少存在,我如何告诉 varnish 在从他的服务提供它之前先查看缓存?

  • 没有缓存 PHP 文件(我的意思是 PHP 生成的 HTML 内容)。我总是在标题中看到:年龄:0……有什么线索吗?

谢谢!

【问题讨论】:

    标签: varnish


    【解决方案1】:

    访问图片的URL,删除图片,再次访问 它存在……清漆缓存了它……我怎么能告诉清漆先看 如果文件在从他的缓存中提供之前至少存在?

    嗯,缓存的全部目的不是一遍又一遍地做同样的工作(比如检查存在和加载文件,或生成 PHP 响应),而是重复使用生成的响应。 Varnish 从来没有对某个文件的存在感到陌生(您的后端服务器进行了数学计算),因此它永远无法检查“文件是否至少存在”。

    但是,有一些方法可以指示 varnish 不要永远缓存 url。例如;如果您的后端响应指示任何缓存不重用结果(某些 HTTP 响应标头表明这一点),varnish 不会缓存它。 Varnish 将足够聪明(默认情况下),不会缓存带有 cookie 的响应(这可能会回答你的第二个问题)。您可以告诉 varnish 仅将响应缓存一段时间(例如 30 秒),因此您的删除将很快被提取。更改/删除文件后,您可以从清漆中清除 url。如果您的后端服务器没有通过它的响应标头正确说明这一点,您可以通过编写自己的 .vcl 文件来覆盖此行为。

    PHP 文件没有被缓存(我的意思是,生成的 HTML 内容 由PHP)。我总是在标题中看到:年龄:0……有什么线索吗?

    我可以猜到:您正在设置 cookie。但是,如果您将响应标头添加到您的问题中,这将非常有帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-09
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2016-09-23
      • 2016-05-11
      相关资源
      最近更新 更多