作者: 老葛 亚艾元软件
随着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里面。