WordPress全站静态化
继上次把主页静态化后,现在本站所有文章都已经是静态的html页面,跟MT系统差不多,当有新文章或者新留言,相关的html文件在后台自动更新。比如这篇文章http://zhiqiang.org/blog/536.html是一个服务器上真正的文件,而以前它被rewrite到http://zhiqiang.org/blog/index.php?p=536,HTML页面的创立时间(服务器端)可见页脚:
静态化一个好处是,降低数据库查询和CPU占用率,host HTML所用资源极少。不过我的主要目的是减少用户访问时的页面载入时间。我很喜欢现在的douban,页面基本上即点即开——可能是因为服务器质量和位置比较好。
不知道是不是开了GZip传输的原因,现在页面打开时,需要几秒钟等待,然后页面一下子全开。与我想象中的页面慢慢显示,可以边显示边浏览不一样。另外在FireFox下,有时候背景图片比页面内容晚出现,页面载入完全前特别难看,不知道怎么解决。
实现方法是通过WP-Write HTML这个插件来实现的,不过我hack和删除了90%代码,因为我不需要那么多功能,而且本blog的URL结构比较简单。
静态页面一般不支持COOKIE,不过还有javascript可以用:
// Retrieve the value of the cookie with the specified name.
var aCookie = document.cookie.split(";");
function GetCookie(sName, id)
{
// cookies are separated by semicolons
var something = document.getElementById(id);
if(!something) return 0;
for (var i=0; i < aCookie.length; i++)
{
// a name alue pair (a crumb) is separated by an equal sign
var aCrumb = aCookie[i].split("=");
if (sName == aCrumb[0]){
something.value=unescape(aCrumb[1]);
return 1;
}
}
// a cookie with the requested name does not exist
return 0;
}
这次系统升级是看到关于本站缓存机制的说明这篇文章后做出的,不过所用方法不同。另外还有一篇WordPress的优化手册也值得一看,特别是最后的image meta部分。
另注:Firefox的fasterfox插件能在右下角显示网页载入所需时间。

非常感谢,有用的文章。
我现在发现我的主要的问题在于目录结构上的不同,
而解决这个问题,更多的是需要在静态和动态之间找一个比较好的平衡点。
正在思考中。
看来你还是用了urlrewrite到真正的地址上来实现了你全站的静态化,不过我的流量没有那么大,所以暂时不去弄它。看来我们有共同的思想,不过不建议你在用户留言的时候去重写你的静态化文件,即使filelock,也容易出问题的,所以评论我认为还是纯的ajax实现的好。
我的流量其实也很少,主要想法是加快浏览速度
。
在首页,我也用了很多ajax,但如果ajax取回一个php文件,只要包含wp-config头文件,它就会进行初始化处理,但Wordpress的初始化处理是很消耗CPU的,比如它把插件文件都包含了进来并sparse了一遍。所以,现在我用ajax,我尽量ajax get纯html文件,比如单篇文章下的最新文章列表。
至于你说的filelock是啥?我知道的一个bug是如果两个用户同时留言,可能会导致程序出错(两人同时对文章进行写入)。我对php只是略知皮毛,请问这时候应该如何处理?
flock,文件锁定,刚好解决你所说的bug,去参考一下php手册,或者我的那篇关于本站缓存机制的说明的文章里面的文件锁定部分。呵呵,看了WP-Write HTML,原来已经有人用我同样的思想全站静态化wp了,呵呵,看来我有重复发明轮子了!呵呵
ZhangZi,我发现你玩wp很有心得了。呵呵,我懒得去弄这个
不过发现wp到你手里真的不是一般的wordpress啊):
关于ajax comment的问题,还有一个问题请教以下.我也想将sidebar中的comment list用ajax技术来实现,
不知道你是用的哪个插件.
我自己搜索了一些,没找到特别好的答案.
那玩意儿是我自己写的,就用的我的留言插件里面的函数...
果然超级快
请问这个网站的主机在哪里?
dreamhost,头年,5月份到期,之后可能要搬了
原来是DH,我有个DH的空间闲着
不知道DH在国内的速度如何,您在清华怎么用DH? 买包月卡吗
我用的是ipowerweb,服务还不错。
在HK连基本上是神速。
000
其实现在搜索引擎对动态文章索引也很好,不一定非要静态页面的。
静态化并非只是考虑SEO哦
难道我的评论都需要审核,为什么呢?
的确如此,具体原因我也不知道。我的antispan工具是Akismet...你在别人那里也是这样么?
没有,我在别人那里都很正常,faint了 ,不过我留言的blog不多,但是基本都没有被spamm阿!
改名字了,再看看,无语了……难道是RPWT?
基本确定你的名字有问题...
没有啊,名字也被你那个给spam
打算把你的那个MSN风格的留言系统更新一下。
呵呵,我倒是觉得网站不是影响速度的关键,浏览的瓶颈应该是网络。
就像我的服务器是架在重庆的,Chaney访问的时候要先通过广州的国际出口局,所以速度会很慢。而且从国外访问盘古服务器不是一般的慢,这也是没办法。
Dreamhost的速度还算可以吧,不过我加载这个页面花了18s。等空间到期了,zhangzi可以试下Bluehost,不过传言GFW封得比较凶,但是它价格比较低。
现在国内的网络状况还是那句名言:世界上最远的距离不是天涯海角而是你在网通我却在电信。
网通访问dreamhost似乎挺快的,基本上加载单页面平均2s。你在什么位置?
用http://www.webwait.com/可以测试网页平均载入时间。
一般来说,我这里的php页面生成时间为0.5s,当载入时间在2s之内,能节省的时间是非常可观的(加快20%)。
恩,听你说的也很有道理,所以我先把wp-cache给关掉了,研究下再说。
我是四川绵阳电信,这个也是看时间的,比如我在Linux下加载这个页面才花了7s。
千万不要用bluehost和Globat 的,不然会被GFW玩残的
javascript怎么用
GetCookie("comment_author_10add94cfc29a64b08306c8a8f9edb30", "author");
上面这条语句把cookie里的comment_author填到留言框的"作者"栏。两个参数,前者是你的cookie的对应name,后者是你要把 cookie项填到的地方的id。cookie的name后面那一串数字是你的URL的MD5,或者你可以直接察看你的网站的cookie (FireFox很多插件都能看cookie)。
楼主能不能详细说说你修改了WP-Write HTML哪些代码?
正好在找学习这方面的朋友.学习中会遇到好多问题. 有时不知道怎么解决好.希望能交个朋友. 互相帮助下.
我的网站 也正准备静态化,现在的asp 搜索引擎收录不到.很郁闷. 您可以看下我的网站: http://ruuur.cn
我的博客: http://ruuur.cn/blog 我们做个友情链接吧
静态不错 速度快
[...] 阅微堂还给出了一个全站静态化的绝好方法,值得借鉴,尤其是java读取cookie的方法,相信对不少人都会有用。 [...]
[...] 阅微堂还给出了一个全站静态化的绝好方法,值得借鉴,尤其是java读取cookie的方法,相信对不少人都会有用。 [...]
这个功能很好用
感谢分享
博主你好
我现在还在用WP2.32,并不打算用2.5,请问下,你提到的那个WP-Write HTML插件还适用于2.32么?另外,我看了下你的html,发现你好象用了cos-html-cache这个插件。
搞得我有点迷糊了,麻烦楼主能给我的整体的解决方案么?我想实现全站html
谢谢。
因为wp-write html没有人维护,之前是我自己修改了插件自己用。但由于WordPress升级等,后来也就懒得自己改了。所以直接用了storyday的cos-html-cache。
cos-html-cahce可以html静态化首页和post页面。但对于category和page页面并不静态化。不知道是否符合你的要求。你可以向插件作者提出功能建议。
hi,我现在也在用cos-html-cache,不过我发现一个问题,不知道是怎么回事。
那就是每次我重新更新cache后,都会出现无法访问的情况,能ping,能FTP,能进plesk等等,但是就是不能访问页面,不知道是不是我的post有点多的原因,我有4000多个post。
博主你这里会出现更新cache后不能访问的情况么?
我这里没有出现这种情况,你可以咨询一下插件作者
谢谢,我已经查出来了,原来是我调用了另外一个程序导致的。
谢谢你的回复
问个问题 我静态文件是生成了 那怎么让他生效呢
我一点文章还是原先的伪静态地址 怎么让他自动指定
地址本来就没变。启用了就OK了。不放心的话察看源代码的最后的注释标记。