真正静态化Wordpress页面

两个月前,空间不稳定得几乎让我绝望,一度有过将 Wordpress 彻底静态化的打算,于是 Google 到 Cosbeta 的 Blog。原来他正在使用自己写的一个 Wordpress 插件,可以生成脱离数据库操作的 html 页面,令 Wordpress 像Movable Type 一样摆脱对数据库的完全依赖。可惜当时他的 Blog 布局实在有些“恐怖”,我还以为要使用这个插件就得把页面弄丑,所以放弃了。

最近两天,Cosbeta 正式发布了他酝酿已久的大作—— Cos HTML Cache,在一众人的试用之下,我才知道根本不是那么回事,这个插件支持任何模板。 因为会生成真实的文件,我需要改变一下目前的永久链接形式才可以启用该插件,否则根目录早晚乱成一团。然而为了一个插件丢掉大部分的访客显然也是个不明智的举动,好在 Cosbeta 推荐给我另一款 plugin,可以完美解决通过搜索引擎和其他链接进入本 Blog 的转向问题。这个插件叫做 Permalinks Migration Plugin,采用 301 Redirect 形式安全地将访客和搜索引擎转向到当前的链接。既然如此,一不做二不休,我的 Blog 就这么"半"静态了。

半静态有插件本身的原因,也有模板自身的因素。Cosbeta 目前只让插件生成文章和首页的静态化页面,各种存档页面依然需要依附数据库,此为“半”原因之一;Wordpress 模板的 css 文件在写作时虽然采用的是绝对路径的链接,但因为模板的调用机制,许多路径都使用了 php 函数来表达,静态化之后,如果数据库死掉,页面虽然可以访问,只是无异于裸奔,是为“半”原因之二。前者的问题见仁见智,对我来说这样的静态化程度足矣,过分的静态化也会有一些随之而来的问题。Cosbeta 告诉我他准备在日后的更新中加入一些类似 WP-Cache 的动态化缓存机制,应该可以满足部分用户的需求;后一个问题就得靠自己动手修改 css 和模板了,反正我懒得弄,数据库又不是随时都死掉,BH 还是很稳定的。

BTW,介绍完这个插件,我还想给 cosbeta 一个建议,cos html cache 显然没法突出这款插件的功能,搞不好别人会觉得这个东西和 wp-cache 差不多,叫 cos html creator 或者 producer 如何?说个题外话,既然是我自己的 Blog,写一些自己喜欢的东西是免不了的,比如刚才我就写了 一篇乐评,弄得像个大杂烩不是我的本意。。。

Update 1: 使用该插件以后,Wordpress 内建的搜索功能会失效。解决方法很简单,方法1是换用Google搜索代替内建的搜索功能;方法2就是修改模板内的searchform.php文件。

找到 action 这里,一般情况是这样的:action="<?php bloginfo('url'); ?>" 。因为域名根目录下的首页已经被index.html优先占用,而index.html无法支持Wordpress的搜索通配符,造成搜索功能失效。直接调用原本的首页 php 文件搜索功能便会恢复,修改后代码如下:

action="<?php bloginfo('url'); ?>"/index.php

某些模板的搜索栏并非位于侧边栏,比如包含在 header 文件,同样可以修改其中的代码达到目的。修改后记得重建全站页面。

Update 2: 编辑页面 (page) 的时候请暂时停用该插件,否则会触发其自动生成静态文件,造成内容丢失的假象。例如更新 http://ishawn.net/about 这样的目录结构,插件无法获取页面内容,但会自动生成 about 文件夹以及其中的空白 index.html,让人误以为出现问题。

如若忘记停用该插件而更新页面导致出现上述情况,可以直接通过 ftp 删除已经生成的目录和页面来恢复 page 的正常显示。同时建议暂时关闭页面的 Ping 接收和评论,因为外部对页面的更新同样会触发插件自动生成无内容页面。。。

等待Cosbeta更新解决该 Bug。

Update 3: 已经解决。插件更新参见生活点滴

Tag(s):
  • QQ书签
  • Del.icio.us
  • 百度收藏
  • Google
  • 饭否
  • FriendFeed
Shawn Published@5:13 / 2007-06-02 / Trackback / Skip
25 Comments Contributed by Visitors
  1. rebuttonPeter / 7:29@2007-06-02 1
    Peter

    又是一段时间没见,前段时间确实太忙了,连加你的链接的时间都没有挤出来,而你给我的留言也是才看到,在此表示实在抱歉!

    现在回学校了,上网的时间又多起来了,So...

    See you later soon.

  2. rebuttonShawn / 7:31@2007-06-02 2
    Shawn

    你还真早。。。

  3. rebuttoncosbeta / 9:20@2007-06-02 3
    cosbeta

    html-cache-creator名字已经取过,所以这次取成cos-html-cache,cos主要是好区分,名字确实很重要

  4. rebuttontanya / 15:26@2007-06-02 4
    tanya

    他一向早睡早起`精力旺盛!!

  5. rebuttoncosbeta / 20:47@2007-06-02 5
    cosbeta

    不错,想得周到!

  6. rebuttoncosbeta / 20:53@2007-06-02 6
    cosbeta

    小伙子,听仔细的阿

  7. rebuttonShawn / 20:55@2007-06-02 7
    Shawn

    我还不是只有遇到了问题才能解决。

  8. rebuttonburning / 22:29@2007-06-04 8
    burning

    试了试,没搞定分类和存档

  9. rebuttoncosbeta / 11:13@2007-06-05 9
    cosbeta

    功能描述:生成文章和首页HTML缓存文件,当有评论、修改、添加和删除文章的时候更新首页和当前页面缓存。注意,不缓存其他页面。
    我早就说了不缓存其他页面,你硬说这个没有搞定?本来就没有打算去搞他啊。

  10. rebuttonburning / 17:11@2007-06-06 10
    burning

    那使用以后,分类和存档的链接出现错误,应该怎么处理?

  11. rebuttonJianquan's Blog / 3:33@2007-06-10 11
    Jianquan's Blog

    请问你的My Tags 这个是插件还是什么啊
    能提供么 ???
    来你的BLOG 有意思啊 说话实在
    我是搜索MT合租过来的

  12. rebuttonShawn / 12:49@2007-06-10 12
    Shawn

    Tag Cloud widget for UTW 这个插件。

  13. rebutton正月初一 / 10:00@2007-08-19 13
    正月初一

    为什么我也是用的unnamed但是在使用cos-html-cache的时候虽然能缓存全部页面,但是访问的时候却是空白呢??真是不知道怎么了???教教我吧!我把K2的所有东西都关了还是不行啊??

  14. rebuttonShawn / 10:06@2007-08-19 14
    Shawn

    你开WP-Cache了么?如果没有开是不会出现这个问题的。

  15. rebutton正月初一 / 10:49@2007-08-20 15
    正月初一

    不是wp-cache的原因,这个我早删除了,好象是侧边栏的问题,只要我把侧边栏弄出错误来就能缓存了,真奇怪.
    能不能给我发下你的comment.php和sidebar.php文件啊!
    邮箱:freepkadmin#gmail.com

    谢谢了

  16. rebutton正月初一 / 16:50@2007-08-20 16
    正月初一

    好了,原来是编码的问题.搞定了麻烦你了

  17. rebutton老非 / 8:03@2007-09-15 17
    老非

    这个正是我在找的,我在blog上引用link一下。不如互换一下友情链接吧。;)

  18. rebutton木马专杀 / 16:29@2007-10-31 18
    木马专杀
  19. rebuttonmr wu / 20:39@2008-11-30 19
    mr wu

    google搜索插件哪里有呢。

  20. rebutton醉倚西风 / 21:25@2008-12-15 20
    醉倚西风

    用用看看 貌似不错哟

  21. rebutton老石 / 2:10@2009-04-04 21
    老石

    用了插件后,害我不得不生硬的强插了一个目录在URL,之前的链接丢了不少,Google管理员工具一堆404页面.
    另,首页总是指向HTML文件,后来在HTACCESS里改了默认文件调用顺序,似乎才有些解决.但很多时候,总是要手动删除生成的index.html,快要把我给逼疯了.
    如果一个插件让我耗去大量时间和精力,我想宁愿还是不要了吧.

  22. rebuttonSylonamon / 22:03@2009-07-23 22
    Sylonamon

    哈哈很不错的东西啊,一直在寻找。。。
    收藏了!

  23. rebutton土狼妹妹 / 22:03@2010-01-20 23
    土狼妹妹

    有点复杂,学习了,新年愉快

  24. rebutton随影 / 13:58@2010-06-07 24
    随影

    算了 哪的 用那些哦!

  25. rebutton天涯 / 0:39@2010-06-13 25
    天涯

    :grin: ,这个插件不错,我得把网站搞成静态的。

  26. rebutton天涯 / 0:41@2010-06-13 26
    天涯

    不过整起来很麻烦啊

  27. rebutton赖勇 / 8:20@2010-06-14 27
    赖勇

    今天把网络弄对没有?

  28. rebuttonlionzim / 12:01@2010-06-14 28
    lionzim

    刚好在找这个~~呵呵,收藏啦! :cool:

  29. rebuttonRudy / 13:25@2010-06-14 29
    Rudy

    我也觉得这个插件还有待提高。否则,每次更新或改动后,都要删除掉再重新来生成。可以加入那样一点一键生成的功能。
    另外,你这个评论框很好看,我喜欢,不知道是怎么实现的呢?

Leave Comments Here...

必填

必填&保密

随您

支持Ctrl+Enter快捷提交

  • 已部署"白忙活" Anti-Spam 系统,猪肉 Spammer 请注意查看源代码链接处。
  • 本站不会泄露您的邮件地址,敬请放心。
  • 支持常用 HTML 代码调用,插入 PHP 代码需注意:< = &lt;> = &gt;
  • 仅当某人针对您的评论做出回应时,您才会收到由本站发出的通知信件。
  • 如您希望以相同方式通知某位网友,请点击 Reply 按钮,或自行输入 @对方名字:
  • 鼠标移至评论列表中的 @someone: 区域即可自动显示 someone 的评论内容。
4 Trackbacks/Pingbacks
  • 真正静态化Wordpress页面 | Think's Blog (Pingback, 2007-09-12)
    [...] 半静态有插件本身的原因,也有模板自身的因素。Cosbeta目前只让插件生成文章和首页的静态化页面,各种存档页面依然需要依附数据库,此为“半”原因之一;Wordpress模板的css文件在写作时虽然采用的是绝对路径的链接,但因为模板的调用机制,许多路径都使用了php函数来表达,静态化之后,如果数据库死掉,页面虽然可以访问,只是无异于裸奔,是为“半”原因之二。前者的问题见仁见智,对我来说这样的静态化程度足矣,过分的静态化也会有一些随之而来的问题。Cosbeta告诉我他准备在日后的更新中加入一些类似WP-Cache的动态化缓存机制,应该可以满足部分用户的需求;后一个问题就得靠自己动手修改css和模板了,反正我懒得弄,数据库又不是随时都死掉,BH还是很稳定的。 [...]
  • wordpress文章静态化及中文标题自动转换成拼音 (Pingback, 2008-01-09)
    [...] 还有一个就是文章链接的真正静态化,转换成html文件,这样一来既美观又减轻了数据库的压力。这里有一篇文章介绍的不错,我就不多啰嗦了,呵呵。 WordPress [...]
  • EEF重建:网站建构记录 | 企业工程论坛 (Pingback, 2010-01-05)
    [...] 在此之前,设了自定义固定链接:/pub/%year%/%monthnum%/p%post_id%.html。这个设置与静态化方案关联。最初学习时,看到这篇《真正静态化Wordpress页面》,是个很好的入门说明。 [...]
  • wordpress能自动ping么 (Pingback, 2010-05-03)
    [...] 真正静态化Wordpress页面 [...]

Shawn Blog

Shawn的个人博客(Blog),分享Wordpress技巧和Firefox浏览器心得,关注Web 2.0应用发展,记录对虚拟主机的使用评价。