You are here

Drupal 7 网站静态化打包文档

作者: 老葛 亚艾元软件

随着Drupal7版本的进入历史,官方不再维护,相信越来越多的用户,会选择将Drupal7网站静态化,这样会避免各种安全问题,还会提升速度,作为历史遗留网站的一个过渡。随着这样的需求越来越多,我们尝试了与原来boost静态化不同的静态化模式,将Drupal7网站彻底转换为静态html,完全不依赖PHP,mysql数据库。

Drupal7下面的静态化打包,我们采用static模块,在此基础之上,为了兼容nginx,做了进一步的改进。


参考配置: 


Production host:生成站点所在路径,可以包含子目录。

Root cache directory:文件的存放目录的根目录。

Normal cache directory:实际存放的本地目录




状态tab下面有四个按钮。

Clear all generated data:会清空整个目录。

Publish Now:会重新生成静态文件。

 

路径这里可以添加路径,比如通过panels创建的路径,无法自动识别,就可以在这里手动的添加。



需要注意事项:

1,存放静态文件的目录的权限。一定要配置好;

 


2,为了更好的做字符串替换,为Drupal7打了一个补丁:

Common.inc文件中的2241行

function url($path = NULL, array $options = array()) {

  // Merge in defaults.

  $options += array(

    'fragment' => '',

    'query' => array(),

    //'absolute' => FALSE,

'absolute' => TRUE,

    'alias' => FALSE,

    'prefix' => ''

  );

系统默认改为了'absolute',这样替换比较好。

3,在static模块里面,我增加了两个功能:

  3.1, 增加了对pdf.js的支持。

  3.2,内部url路径,全部改为了.html的形式,这样放在nginx下面会比较方便。

  原来的路径node/1改为node/1.html

对应代码static.module:

    $data = preg_replace_callback('|(<iframe[^>]* src=["\'])([^"\']*)(["\'])|', '_static_replace_pdf_iframe', $data);

    //内部路径增加.html

$data = preg_replace_callback('|(<a[^>]* href=["\'])([^"\']*)(["\'])|', '_static_replace_a_href', $data);

    //pdf js目录拷贝,其它辅助工作

static_copy_pdfjs();

回调函数放在了static.file.inc里面。





论坛:

Drupal版本: