0

我正在学习 Varnish,但我无法理解一些非常基础的知识。我创建了一个简单的文件,我希望 Varnish 将其存储在缓存中,名为test.php,它看起来像这样:

<?php
    header("Cache-Control: public, must-revalidate, max-age=0, s-maxage=3600" ); // <-- This should make Varnish cache, right?
?>

<!DOCTYPE HTML>
<html>
<body>
        <h1> test </h1>
</body>
</html>

有了这些标头,我希望 Varnish 将文件在缓存中存储一​​个小时(3600 秒)。但是,当我运行varnishlog -b -o -i TxURL(监控对后端的请求)时,我可以看到有流量。像这样:

13 BackendClose b default
13 BackendOpen  b default 127.0.0.1 57857 127.0.0.1 8080
13 TxURL        b /test.php
13 BackendReuse b default
13 TxURL        b /test.php
13 BackendReuse b default
13 TxURL        b /test.php

如何让 Varnish 缓存这个文件,而不是每次都联系后端?

4

1 回答 1

0

我检查了萤火虫,我在标题中发现了一个 Cookie。我不知道为什么那里有一个 cookie,但我用这个更新了我的vcl文件:

sub vcl_recv{
    if (req.http.cookie){
            unset req.http.cookie;
    }
}

Varnish 默认配置为不缓存,当请求中存在 cookie 标头时。

于 2013-05-28T09:21:35.407 回答