我是第一次使用 Varnish Cache,并且没有任何乐趣让它按我的意愿工作。
我的问题似乎很简单。
我只希望 .php 页面被缓存。
到目前为止,每个 .php 请求总是通过清漆缓存并访问我的 apache Web 服务器。
问题在于 cookie 和对 session_start() 的调用;
无 session_start() = 缓存 使用 session_start() = 无缓存
现在文档很简单,可以理解,但我尝试过并没有成功。一旦我添加对 session_start() 的调用 = 不再缓存。
这是带有 PHP 的示例 HTML:
<?php
session_start();
?>
<html>
<head>
</head>
<body>
<?php echo date('Y-m-d H-i-s'); ?>
</body>
</html>
这是我非常干净简单的清漆 default.vcl
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
if (beresp.http.Set-Cookie) {
unset beresp.http.Set-Cookie;
return (deliver);
}
}
这应该从客户端和服务器取消设置 Cookie,并且确实这样做了。在 FireFox 中使用 FireBug 进行调试时,当我使用此 default.vcl 时,我可以看到 Set-Cookie 和 Cookie HTTP 标头不存在
以下是来自 FireFox 的 HTTP 标头:
响应标头:
HTTP/1.1 200 OK
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/html
Content-Length: 192
Date: Wed, 23 Feb 2011 01:34:17 GMT
X-Varnish: 2052563421
Age: 0
Via: 1.1 varnish
Connection: keep-alive
Request Headers:
GET /test.php HTTP/1.1
Host: xshare.com.local
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0
我只是看不出我哪里错了。我已经修补了 2 个小时,在 .vcl 配置文件中添加/更改和删除行和变体。
任何人都可以提供任何建议吗?
非常感谢。