我有完全相同的问题, 清漆只caching来自单个会话的资产
完整configuration: http : //pastebin.com/SiKEkWpp
这是一个Magento 1.6 + Varnish 3设置。 一切都按预期工作,只有当我在不同的浏览器中加载相同的URL(同一个结果与不同的IP),我第一次得到一个MISS。 在相同的浏览器刷新后得到一个HIT,一切正常。 这就是我认为是我需要的答案背后 – 只是这些人没有描述的解决scheme。
“开始检查什么是发送到后端,尤其是cookies: varnishtop -i TxHeader -I Cookie – KM01 3月3日13:49”“感谢KM01 ..你的build议指向了我的正确方向 – Rianto Wahyudi 3月5日在21:57“
所以,我在Browser1中加载URL1两次,用varnishtop -i TxHeader -I Cookie显示cookie。
Browser2中的相同URL1:
Browser3中的相同URL1:
…等
我已经尝试删除vcl_hash,不同的hash_data(),没有任何帮助。 尝试删除所有的cookies这里解释这里避免Varnish打Magentocookies – VCLcookies被删除,但结果是一样的。
请指教。 谢谢。
编辑1:我刚刚发现,我的vcl_hash必须如下 – 否则不同站点的主页上的同级服务器不能正确加载。 所以下面的散列正在工作,但我仍然有上面描述的问题:
sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } if (!(req.url ~ "^/(media|js|skin)/.*\.(png|jpg|jpeg|gif|css|js|swf|ico)$")) { call design_exception; } return (hash); } sub design_exception { }
编辑:只是注意到在上一个问题的答复。
if (req.url ~ "\.(png|gif|jpg|swf|css|js)$") { set req.http.user-agent = "Mozilla"; unset req.http.Https; unset req.http.cookie; return (lookup); }
不过我只用了set req.http.user-agent =“Mozilla”; 规范用户代理,这似乎现在工作。 我把它放在vcl_receive的最顶端:
sub vcl_recv { #Normalize yser agent so it's cached for all set req.http.user-agent = "Mozilla";
….