You are here

Drupal8 实现动静分离

作者:亚艾元技术部

我们有一个客户,想在国庆期间关闭网站的数据库,还想让网站能够访问。这个需求在国内很常见。我们初步选定了boost模块基于Tome模块。首先尝试了Tome模块,总是报错,我检查了一下,网站升级不彻底,重新帮助客户升级到8.7.7,再安装Tome模块。在后台生成静态页面的时候,总是报错。我们研究一下,增加了日志输出。检查到了几个出错的页面:



\Drupal::logger('tome')->notice('path:'.$path);
      
       ///  path:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD…
       // png
       if(substr($path,0,11) == 'data:image/'){
         return;
       }
       //可以在settings.php里面配置
 
       $exclude_paths = [
         '/wechat',
         '/en/wechat',
        
       ];
       if(in_array($path, $exclude_paths)){
                return;
       }

 

   发现写的wechat模块提供的路径,匿名用户下,在tome下面报错,就把它排除出去了,还有以data:image/开头的奇怪路径也被我排除掉了。

   这样批处理就可以正常运行。成功生成了静态页面。这是后面我们的tome在settings.php里面的配置:

$settings['tome_files_directory'] = '/data/8211/static/files';
$settings['tome_content_directory'] = '/data/8211/static/content';
$settings['tome_static_directory'] = '/data/8211/static/html';
$settings['tome_static_path_exclude'] = [
  '/wechat',
  '/en/wechat',
];

生成的静态文件存在了/data/8211/static/html目录下面。我们将端口指向到这个静态文件的目录,当前使用的apache,可以直接访问,运行良好。

 

将同样的目录,部署到nginx下面,使用Drupal的nginx配置,是出不来的。Tome生成静态文件夹,部署到nginx下面,采用这样的配置:

    location / {
         try_files $uri $uri/ $uri/index.html; # For Tome static html files
    }

这样就可以跑起来了。

   


论坛:

Drupal版本: