我已经把我的Wordpress网站(一个小博客)搬到了一个前面有清漆的托管平台上。当cookie存在时,Varnish就不会缓存。
Wordpress似乎启动了会话,即使它不需要。因此,它设置PHPSESSID
cookie,尽管var_dump()
属于$_SESSION
为空(在index.php末尾完成时)。
有没有办法阻止Wordpress这样做?也许有一个现有的或者定制的插件?
EDIT: 再看一遍,该课程是否用于站点前端的任何有用内容?发布评论似乎设置了其他cookie。我可以排除吗PHPSESSID
来自清漆?
我知道W3 Total Cache可以与Varnish配合使用,但它是一个庞大的插件,尽管花费了大量时间对其进行配置,但性能更差,有时会出现问题。
最合适的回答,由SO网友:phil-lavin 整理而成
我给了它一个平底船,它似乎是好的。下面是我的VCL。它基本上会取消所有cookie的设置,除非是wp admin。这只适用于非常简单的站点。
# Specific to my.website.com
if (bereq.http.host == "my.website.com") {
# Strip all cookies (the only one should be PHPSESSID) if not admin
if ( ! bereq.url ~ "^/wp-admin/") {
unset beresp.http.Set-Cookie;
}
}
SO网友:haz
我们有一个与您类似的用例,但我们正在一个多站点Wordpress站点上运行Varnish,该站点运行四个高流量新闻站点。
以下是我们VCL文件的相关摘录。
# WordPress - admin, uploads and preview.
if (req.url ~ "^/wp/" || req.url ~ "^/wp-(login|admin)" || req.url ~ "^/wp-content/uploads/" || req.url ~ "&preview=true") {
return (pass);
} else
# Allow Editors to see an uncached version, and Users to see up-to-date comments.
if (req.http.host ~ "<our domain>" && req.http.Cookie ~ "wordpress_logged_in_") {
return (pass);
} else
# Password protected posts.
if (req.http.Cookie ~ "wp-postpass_") {
return (pass);
}
unset req.http.cookie;
(注意:这是Varnish 4 VCL语法,与Varnish 3略有不同。)