You are here

Drupal 8 Nginx 下面boost缓存规则

    作者:亚艾元技术部

Drupal 8下面的boost模块,并不完善,我们改造了一下,刚好能够满足我们的需要。

不过在配置nginx的重写规则的时候,Drupal8网站需要单独的写一个规则,我开始的时候这样写nginx下面的规则:

       if ($request_uri ~* "^/$"){
      #set $frontboost "Y";
              #  if ( -f $document_root/sites/default/files/boost/node.html ) {
                      rewrite ^.*$ /sites/default/files/boost/node.html break;
              #  }         
       }

重启nginx总是报错,后来将它改为了:

       set $frontboost "";     
       if ($request_uri ~* "^/$"){
          set $frontboost "Y";
       }
       if ( -f $document_root/sites/default/files/boost/node.html ) {
          set $frontboost "${frontboost}E";
       }         
       if ($frontboost = YE){
           rewrite ^.*$ /sites/default/files/boost/node.html break;
       }

Nginx配置文件里面if语句竟然不能嵌套。所以我只好设置了一个$frontboost变量,将两个if语句组合,从而实现首页的重新。

 if ($request_uri ~* "^/$"){

 表示当前是首页。

       if ( -f $document_root/sites/default/files/boost/node.html ) {

表示当前首页的boost静态文件存在

 

两个条件都满足,我们rewrite 一下,使用静态文件响应。

 

最后面是默认的静态页面映射配置:

        if ( -f $document_root/sites/default/files/boost$request_uri.html ) {
            add_header X-Boost-Cache "full";
            rewrite ^.*$ /sites/default/files/boost$request_uri.html break;
         }

 

Drupal8下面,boost模块地址:

https://github.com/swim/boost 

 经过我们的改造,还是很好用的。


论坛:

Drupal版本: