用于wordpress的wp-touch移动插件的清漆:移动/桌面主题切换无法正常工作

时间:2017-03-15 13:10:47

标签: wordpress caching mobile varnish varnish-vcl

我正在使用更新的4.7.3 wordpress与wp-touch pro和varnish latest vrsion(5)

当我登录到wordpress仪表板时,桌面主题与移动设备之间的主题切换反之亦然

但是当我退出时它无法正常工作。

清漆代码

  if (req.url ~ "\?wptouch_switch") {
        return(pass);
    }

我认为它wptouch开关没有通过清漆传递。但即使在我的vcl上面使用它仍然无效。

wptouch theme switch

2 个答案:

答案 0 :(得分:2)

上面的代码只确保切换网址没有被缓存。但是,您应该了解必须分别缓存相同URL的移动版和桌面版。这意味着移动和桌面设备的Varnish VCL中的哈希值不同。

您应该实现此类似于this config

# The data on which the hashing will take place
sub vcl_hash {
    # ....
    if (req.http.X-Device ~ "smart" || req.http.X-Device ~ "other") {
        hash_data(req.http.X-Device);
    }
    # .... 
}

当然,仅靠这一点是不够的。您还需要复制其他相关部分,以便设置位于X-Device程序中的sub detect_device

答案 1 :(得分:0)

将设备检测vcl添加到与default.vcl相同的文件夹

在默认情况下添加以下内容.vcl

sub vcl_recv {

call devicedetect;

if  (req.http.Cookie ~ "wptouch-pro-view=desktop" ) 

      {
                        return(pass);     
      }

}

sub vcl_hash {

   if (req.http.X-UA-Device) {
      hash_data(req.http.X-UA-Device);
   }
   if (req.http.wptouch) {
      hash_data(req.http.wptouch);
   }



}



sub vcl_deliver {


if ((req.http.X-UA-Device) && (resp.http.Vary)) {
        set resp.http.Vary = regsub(resp.http.Vary, "X-UA-Device", "User-Agent");
    }
}