WordPress全站静态化

继上次把主页静态化后,现在本站所有文章都已经是静态的html页面,跟MT系统差不多,当有新文章或者新留言,相关的html文件在后台自动更新。比如这篇文章http://zhiqiang.org/blog/536.html是一个服务器上真正的文件,而以前它被rewrite到http://zhiqiang.org/blog/index.php?p=536,HTML页面的创立时间(服务器端)可见页脚:

 footer_time

静态化一个好处是,降低数据库查询和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插件能在右下角显示网页载入所需时间。

查看更多关于, , , 的内容。

你可能感兴趣的
相关文章

40条留言 -> 跳到留言表格

  • At 2007.03.15 14:55, Chaney said:

    非常感谢,有用的文章。
    我现在发现我的主要的问题在于目录结构上的不同,
    而解决这个问题,更多的是需要在静态和动态之间找一个比较好的平衡点。
    正在思考中。

    • At 2007.03.15 20:01, cosbeta said:

      看来你还是用了urlrewrite到真正的地址上来实现了你全站的静态化,不过我的流量没有那么大,所以暂时不去弄它。看来我们有共同的思想,不过不建议你在用户留言的时候去重写你的静态化文件,即使filelock,也容易出问题的,所以评论我认为还是纯的ajax实现的好。

      • At 2007.03.15 20:44, zhiqiang said:

        我的流量其实也很少,主要想法是加快浏览速度 :)

        在首页,我也用了很多ajax,但如果ajax取回一个php文件,只要包含wp-config头文件,它就会进行初始化处理,但Wordpress的初始化处理是很消耗CPU的,比如它把插件文件都包含了进来并sparse了一遍。所以,现在我用ajax,我尽量ajax get纯html文件,比如单篇文章下的最新文章列表。

        至于你说的filelock是啥?我知道的一个bug是如果两个用户同时留言,可能会导致程序出错(两人同时对文章进行写入)。我对php只是略知皮毛,请问这时候应该如何处理?

        • At 2007.03.15 21:11, cosbeta said:

          flock,文件锁定,刚好解决你所说的bug,去参考一下php手册,或者我的那篇关于本站缓存机制的说明的文章里面的文件锁定部分。呵呵,看了WP-Write HTML,原来已经有人用我同样的思想全站静态化wp了,呵呵,看来我有重复发明轮子了!呵呵

      • At 2007.03.15 20:17, y0ungs said:

        ZhangZi,我发现你玩wp很有心得了。呵呵,我懒得去弄这个
        不过发现wp到你手里真的不是一般的wordpress啊):

        • At 2007.03.16 00:12, Chaney said:

          关于ajax comment的问题,还有一个问题请教以下.我也想将sidebar中的comment list用ajax技术来实现,
          不知道你是用的哪个插件.
          我自己搜索了一些,没找到特别好的答案.

          • At 2007.03.16 00:43, zhiqiang said:

            那玩意儿是我自己写的,就用的我的留言插件里面的函数...

          • At 2007.03.16 10:44, 前博客 said:

            果然超级快
            请问这个网站的主机在哪里?

            • At 2007.03.16 11:42, zhiqiang said:

              dreamhost,头年,5月份到期,之后可能要搬了

              • At 2007.03.16 13:57, 前博客 said:

                原来是DH,我有个DH的空间闲着
                不知道DH在国内的速度如何,您在清华怎么用DH? 买包月卡吗

                • At 2007.03.17 16:48, Chaney said:

                  我用的是ipowerweb,服务还不错。
                  在HK连基本上是神速。

              • At 2007.03.16 12:55, 5555 said:

                000

                • At 2007.03.16 13:29, 禾草唐楷 said:

                  其实现在搜索引擎对动态文章索引也很好,不一定非要静态页面的。

                  • At 2007.03.16 13:32, cosbeta said:

                    静态化并非只是考虑SEO哦

                  • At 2007.03.16 13:37, cosbeta said:

                    难道我的评论都需要审核,为什么呢?

                    • At 2007.03.16 15:28, zhiqiang said:

                      的确如此,具体原因我也不知道。我的antispan工具是Akismet...你在别人那里也是这样么?

                    • At 2007.03.16 17:13, cosbeta said:

                      没有,我在别人那里都很正常,faint了 ,不过我留言的blog不多,但是基本都没有被spamm阿!

                      • At 2007.03.16 17:17, storyday said:

                        改名字了,再看看,无语了……难道是RPWT?

                        • At 2007.03.16 17:23, zhiqiang said:

                          基本确定你的名字有问题...

                        • At 2007.03.16 21:15, zhong said:

                          没有啊,名字也被你那个给spam

                          • At 2007.03.17 16:55, Chaney said:

                            打算把你的那个MSN风格的留言系统更新一下。

                            • At 2007.03.21 14:46, SilverFox said:

                              呵呵,我倒是觉得网站不是影响速度的关键,浏览的瓶颈应该是网络。
                              就像我的服务器是架在重庆的,Chaney访问的时候要先通过广州的国际出口局,所以速度会很慢。而且从国外访问盘古服务器不是一般的慢,这也是没办法。
                              Dreamhost的速度还算可以吧,不过我加载这个页面花了18s。等空间到期了,zhangzi可以试下Bluehost,不过传言GFW封得比较凶,但是它价格比较低。
                              现在国内的网络状况还是那句名言:世界上最远的距离不是天涯海角而是你在网通我却在电信。

                              • At 2007.03.21 16:29, zhiqiang said:

                                网通访问dreamhost似乎挺快的,基本上加载单页面平均2s。你在什么位置?

                                用http://www.webwait.com/可以测试网页平均载入时间。

                                一般来说,我这里的php页面生成时间为0.5s,当载入时间在2s之内,能节省的时间是非常可观的(加快20%)。

                                • At 2007.03.22 13:17, SilverFox said:

                                  恩,听你说的也很有道理,所以我先把wp-cache给关掉了,研究下再说。

                                  我是四川绵阳电信,这个也是看时间的,比如我在Linux下加载这个页面才花了7s。

                                • At 2007.04.11 00:09, Chaney said:

                                  千万不要用bluehost和Globat 的,不然会被GFW玩残的

                                • At 2007.03.31 12:25, myrte said:

                                  javascript怎么用

                                  • At 2007.04.01 20:27, zhiqiang said:

                                    GetCookie("comment_author_10add94cfc29a64b08306c8a8f9edb30", "author");

                                    上面这条语句把cookie里的comment_author填到留言框的"作者"栏。两个参数,前者是你的cookie的对应name,后者是你要把 cookie项填到的地方的id。cookie的name后面那一串数字是你的URL的MD5,或者你可以直接察看你的网站的cookie (FireFox很多插件都能看cookie)。

                                  • At 2007.04.11 20:50, tsian said:

                                    楼主能不能详细说说你修改了WP-Write HTML哪些代码?

                                    • At 2007.06.07 16:17, gxgzres said:

                                      正好在找学习这方面的朋友.学习中会遇到好多问题. 有时不知道怎么解决好.希望能交个朋友. 互相帮助下.
                                      我的网站 也正准备静态化,现在的asp 搜索引擎收录不到.很郁闷. 您可以看下我的网站: http://ruuur.cn
                                      我的博客: http://ruuur.cn/blog 我们做个友情链接吧

                                      • At 2007.06.12 10:29, 初学者 said:

                                        静态不错 速度快

                                        • At 2007.08.27 00:04, 菠萝艾蔻 » 优化Wordpress said:

                                          [...] 阅微堂还给出了一个全站静态化的绝好方法,值得借鉴,尤其是java读取cookie的方法,相信对不少人都会有用。 [...]

                                          • [...] 阅微堂还给出了一个全站静态化的绝好方法,值得借鉴,尤其是java读取cookie的方法,相信对不少人都会有用。 [...]

                                            • At 2007.10.25 10:58, 您好 said:

                                              这个功能很好用
                                              感谢分享

                                              • At 2008.04.15 17:39, alex said:

                                                博主你好

                                                我现在还在用WP2.32,并不打算用2.5,请问下,你提到的那个WP-Write HTML插件还适用于2.32么?另外,我看了下你的html,发现你好象用了cos-html-cache这个插件。

                                                搞得我有点迷糊了,麻烦楼主能给我的整体的解决方案么?我想实现全站html

                                                谢谢。

                                                • At 2008.04.16 02:26, zhiqiang said:

                                                  因为wp-write html没有人维护,之前是我自己修改了插件自己用。但由于WordPress升级等,后来也就懒得自己改了。所以直接用了storyday的cos-html-cache

                                                  cos-html-cahce可以html静态化首页和post页面。但对于category和page页面并不静态化。不知道是否符合你的要求。你可以向插件作者提出功能建议。

                                                • At 2008.04.27 15:43, alex said:

                                                  hi,我现在也在用cos-html-cache,不过我发现一个问题,不知道是怎么回事。

                                                  那就是每次我重新更新cache后,都会出现无法访问的情况,能ping,能FTP,能进plesk等等,但是就是不能访问页面,不知道是不是我的post有点多的原因,我有4000多个post。
                                                  博主你这里会出现更新cache后不能访问的情况么?

                                                • At 2008.04.28 10:31, alex said:

                                                  谢谢,我已经查出来了,原来是我调用了另外一个程序导致的。

                                                  谢谢你的回复

                                                  • At 2008.07.28 17:05, pigpot said:

                                                    问个问题 我静态文件是生成了 那怎么让他生效呢
                                                    我一点文章还是原先的伪静态地址 怎么让他自动指定

                                                    • At 2008.07.28 17:33, zhiqiang said:

                                                      地址本来就没变。启用了就OK了。不放心的话察看源代码的最后的注释标记。

                                                    (Required)
                                                    (Required, not published)

                                                      B | I | U | D | 添加链接 | 插入引用 | 插入代码 | 插入表情 | | + | ?
                                                    guest | 注册 | BBS | 管理 | English | 繁體 | https

                                                    阅微堂

                                                    Well, hello, Dolly

                                                    Loading...
                                                    Loading...
                                                    Loading...