Varnish with Wordpress

时间:2015-02-02 作者:phil-lavin

我已经把我的Wordpress网站(一个小博客)搬到了一个前面有清漆的托管平台上。当cookie存在时,Varnish就不会缓存。

Wordpress似乎启动了会话,即使它不需要。因此,它设置PHPSESSID cookie,尽管var_dump() 属于$_SESSION 为空(在index.php末尾完成时)。

有没有办法阻止Wordpress这样做?也许有一个现有的或者定制的插件?

EDIT: 再看一遍,该课程是否用于站点前端的任何有用内容?发布评论似乎设置了其他cookie。我可以排除吗PHPSESSID 来自清漆?

我知道W3 Total Cache可以与Varnish配合使用,但它是一个庞大的插件,尽管花费了大量时间对其进行配置,但性能更差,有时会出现问题。

2 个回复
最合适的回答,由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略有不同。)

结束

相关推荐

Multisite behind Varnish

我正在尝试将varnish与wp 3.0.5网站(Multisite)一起使用,当我访问varnish URL时,我收到以下消息:Multisite only works without the port number in the URL. 我是否需要自定义VCL来实现此功能?我正在为其他工作正常的wordpress站点使用相同的后端配置。。如果我需要在serverfault上询问此问题,请告诉我,我会在那里询问。