2013-02-26 52 views
0

我試圖給我的網店增加一個警告。 設置清漆端口80,後端是127.0.0.1 apache2。清漆和apache問題(試圖改進OpenCart)

Apache Benchmark給出了awefull resulst,就像1-2個請求/秒!

在第一個顯示的文件上; 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 

一定是失去了一些東西很明顯,但對我來說只是清漆不緩存;我究竟做錯了什麼 ?

+0

如果您收聽未緩存的PHP響應,是否存在'Pragma:no-cache'? – 2013-02-26 18:32:57

+0

是的,也存在。 – Disco 2013-02-26 18:36:13

+0

相信我我試過了,它不可能改進opencart。也取決於開發人員,但我真的會去magento或其他東西。 – Dragunov 2017-02-23 15:44:56

回答

1

PHP最有可能有session.cache-limiter設置爲nocache(默認值)。

這將發送一個Pragma: no-cache(並據我瞭解,設置爲當前時間的Expire頭)到Varnish,從而禁用緩存。

+0

好的;我已經把'session_cache_limiter('public');'非常第一線;仍然在php.ini中更改了無緩存 – Disco 2013-02-26 18:42:03

+0

;現在pragma:nocache不見了,現在是公開的;但表現仍然不佳,沒有什麼改善。 – Disco 2013-02-26 18:49:51

+0

也許有些事情:年齡:0? – Disco 2013-02-26 18:50:24

0

默認情況下,光油將忽略«Pragma:no-cache»,除非它是處理指令的指令(https://varnish-cache.org/docs/4.0/users-guide/increasing-your-hitrate.html)。

您的緩存控制似乎配置正確,應緩存6000秒。 您需要考慮的下一件事是cookie。看着你的頭,你有一個PHP會話cookie:

Set-Cookie: PHPSESSID=i9h5ldj8k4fking69d03jr5244; 

光油不會緩存cookie,除非你刪除它在您的VCL文件的請求。例如:

sub vcl_recv { 
    set req.http.Cookie = regsuball(req.http.Cookie, "PHPSESSID =[^;]+(;)?", ""); 
}