0

我正在尝试通过警告来提升我的网上商店。设置清漆端口 80,后端是 127.0.0.1 apache2。

Apache Benchmark 给出了令人敬畏的结果,比如 1-2 request/sec !

在第一个显示的文件上;header.tpl 我有:

<?php
  cache_control( "public, s-max-age=6000");
  expires( to_gmt( time() + 6000 ) );
?>

下面是响应头:

HTTP/1.1 200 OK
Content-Length: 151613
Expires: Tue, 26 Feb 2013 20:04:07
Cache-Control: public, s-max-age=6000
Pragma: no-cache
Set-Cookie: PHPSESSID=i9h5ldj8k4fking69d03jr5244; path=/, language=en; expires=Thu, 28-Mar-2013 18:24:06 GMT; path=/; domain=www.domain.com, currency=CHF; expires=Thu, 28-Mar-2013 18:24:06 GMT; path=/; domain=www.domain.com
Content-Type: text/html; charset=utf-8
Accept-Ranges: bytes
Date: Tue, 26 Feb 2013 18:24:07 GMT
X-Varnish: 186646239
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: MISS

必须遗漏一些明显的东西,但对我来说清漆只是不缓存;我究竟做错了什么 ?

4

2 回答 2

1

PHP 很可能已session.cache-limiter设置为nocache(默认)。

这将向Pragma: no-cacheVarnish 发送一个(据我所知,Expire 标头设置为当前时间),从而禁用缓存。

于 2013-02-26T18:38:08.453 回答
0

Varnish 默认会忽略 « Pragma : no-cache »,除非它是处理指令的指令(https://varnish-cache.org/docs/4.0/users-guide/increasing-your-hitrate.html)。

您的缓存控制似乎配置正确,应该缓存 6000 秒。接下来需要考虑的是 cookie。查看您的标题,您有一个 PHP 会话 Cookie:

Set-Cookie: PHPSESSID=i9h5ldj8k4fking69d03jr5244;

Varnish 不会缓存 cookie,除非您在 vcl 文件中将其删除。前任 :

sub vcl_recv {
  set req.http.Cookie = regsuball(req.http.Cookie, "PHPSESSID =[^;]+(; )?", "");
}
于 2017-05-18T15:52:05.390 回答