WordPress to Hexo(下)
一个多月前,我第二次开始了 WordPress to Hexo(上) 的工作。拖拖拉拉的,现在总算弄完了。记在这里,做个汇报。
Theme
我选择了一个支持 bootstrap 的主题 freemind ,并进行了修改。
AID 服务
正如 WordPress to Hexo(上) 中提到的,我写了一个独立的 AID 服务来提供 Download 和 PageView 功能。
例如这个 API 就直接从 WordPress 的数据库中读取下载信息。
同样的,PageView 的信息也是直接从 WordPress 数据库读取。
嵌入标签处理
在 WordPress 中我使用最多的嵌入标签就是 [kml_flashembed]
和 [download]
。 我写了一些脚本将这些嵌入标签转换成为 Hexo 支持的 flash 和 download 标签。
为了让 Hexo 支持 flash 和 download 标签,我在主题中加入了一段 script 来进行处理。本来准备写一个 package 级别的 Hexo 插件来处理这些标签的。但在 Hexo 插件开发过程中不知道如何获得 Hexo 和 Theme 的配置文件内容,没时间看源码,就干脆用 script 来处理了。
Flash Movie 支持
在 WordPress 中嵌入的 kml_flashembed
代码:
1[kml_flashembed width="450" height="250" movie="/wp-content/uploads/2006/06/Video2BitmapData_1.swf" /]
会被转换成下面的样子:
1{{< flash width="450" height="250" movie="/uploads/2006/06/Video2BitmapData_1.swf" >}}
最终 Hexo 会使用 flash.ejs 模版进行渲染。
在博客中的效果如下: BitmapData类不能正常获取Video中的像素 。
Download 服务
在 WordPress 中嵌入的 download
代码:
1[download id="142"]
会转换成下面的样子:
1{{< download 142 >}}
最终 Hexo 会使用 download.ejs 模版进行渲染。
由于我的服务器性能很差,为了避免每次展示下载页面的时候都去读取数据库影响性能,我在模版中将下载交互方式设置为,先点击下载按钮,做一次 AJAX 调用展示下载信息,在下载信息中提供直接下载链接。
在博客中的效果如下: MacBook Pro Retina 睡眠耗电现象深究 。
域名更换
博客的域名目前更改为 blog.zengrong.net ,要考虑以下两点访问问题:
- 在搜索引擎中缓存的文章地址更改;
- 各种引用(包括博客自身的引用)的文章地址更改。
博客自身的引用,可以使用替换完成,而搜索引擎中的地址更改,就要动用 301 重定向了。下面是部分重定向内容:
1location ~ /post/ {
2 rewrite ^/post/(\d+).html? https://blog.zengrong.net/post/$1.html permanent;
3 rewrite ^/post/date/(.*) https://blog.zengrong.net/archive/$1/ permanent;
4 rewrite ^/post/tag/(.*) https://blog.zengrong.net/tag/$1/ permanent;
5 rewrite ^/post/category/(.*) https://blog.zengrong.net/category/$1/ permanent;
6 rewrite ^/post/author/.* http://zengrong.net/about/ permanent;
7 return 404;
8}
性能
Hexo 生成的博客内容全部上传到又拍云提供的 CDN 中,域名在 CDN 中作了绑定,因此现在博客中全部都是静态内容。
目前的博客文章数量近千篇,编译一次耗时 1 分钟以上,上传使用又拍提供的 upx 同步客户端工具,速度也不快。
这才是硬伤啊……
1hexo g
2INFO Start processing
3INFO Files loaded in 13 s
4...
5INFO 2694 files generated in 1.85 min
剩余工作
- 早期的一些文章使用了 gallery 标签,需要对其做替换。
- 重写主题。因为实在不喜欢 EJS 模版,我考虑使用 Nunjucks 重写主题并进行美化。
- 之前 WordPress 的畅言插件可以将畅言的评论同步到 WordPress 中。考虑自己写一个这样的功能。
- 看到基于 Github 的 Issue 功能实现的 评论系统 和 comment.js ,觉得挺有意思,考虑折腾一下。
- 优化 Hexo 的编译性能,我这近千篇文章的编译速度的确是很糟糕。
- 优化上传性能,目前使用的 upx 的同步功能上传,速度较慢,应该改为仅上传更新过的静态文件。
- 文章ID:2647
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/wordpress-to-hexo2/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。