提高WordPress博客访问速度:缓存静态化网页

有时候,我也访问博友们的网站。每当网页加载速度很慢的时候,我几乎会第一时间就放弃访问,我没有理由去等待它不知何时才能打开。作为网站的主人,有必要保证网站具有够快的访问速度。

土木坛子在全世界各地的加载速度应该还不错,有朋友说在国内加载几乎秒开。这是怎么做到的呢?说来可能让你失望,我选用的香港主机,每年要180美元左右。这种高端虚拟主机提供了足够的硬件资源,足够一个小博客的访问加载实现秒开的速度。

不过,除了硬件投资外,我也从软件层面配置了一下。和大部分博主一样,我用的是CMS开源博客程序:WordPress,我的设置说起来很简单,使用WP Super Cache缓存插件将博客网页完全静态化。

WP Super Cache是个非常不错的缓存插件,很容易使用,但也有一点小技巧。具体而言,把博客的固定链接形式改成非默认后(即链接里不能带有问号,是否HTML后缀无所谓),然后启用插件的缓存功能,在高级配置选项里面,把推荐的选项都打开。如果愿意,在插件的CDN设置里还可以调用诸如七牛的免费CDN加速服务,至少可以提高图片等静态文件的加载速度。

如此操作后,所有页面在第一次被访问后都会形成静态页面留在服务器上,如果网页内容没有改变,下一次被人访问时服务器就会提供已经形成的缓存静态页面,既减轻服务器的压力,又提高了网页加载速度——至少省略了动态页面生成时间。

那么,能否再提高一点呢?可以。我启用了插件里的预加载配置,即使用预缓存功能(Preload),这个功能是指主机自动将所有网页预先访问,形成静态缓存页面。即使页面第一次被访客访问,也会得到缓存静态页面。如此以来,整个网站就相当于一个静态网站,但又兼有动态网站的功能。所有页面由网站程序通过管理数据库生成,但又实现了自动静态化。

由于静态化是通过自动预缓存实现,该过程对主机不会造成集中负载,主机CPU等开销不但不会变高,相反还会降低——主机几乎不再为访客生成页面而服务,哪怕是第一次访问。

既然搭建网站写字,就应该给访客提供良好的访问速度。资金充沛的话就使用好一点的主机服务器,无法提高硬件也至少在软件上简单配置一下。我就是这么做的,并不难,相信你也可以做到。

57 thoughts on “提高WordPress博客访问速度:缓存静态化网页

  1. dapeng

    你的简洁主题是不是也有很大作用?我也用了这个插件了,效果仍然不理想。前两天测试,说是访问速度在倒数10%。你访问我的速度如何?

    回复
    1. 土木坛子 文章作者

      正常情况下,你的网站在我这里速度还可以。在缓存插件静态化下,会比不静态化要好一些。否则,情况会更糟。至于提高网站速度,当然方法有很多,减少主题的复杂性——减少了加载项目数量,去除花哨的东西,不一而足。我看了,你全部采用了七牛的CDN,即JS, CSS等都用了它,由于七牛只在国内才有优势,所以全部用七牛CDN的时候,在国外可能反而变慢了,我只用七牛CDN图片,这样,即使图片没有加载完,网页的文字和排版都已经完成了。事实上,我的图片也不多。

      回复
  2. 安心

    我同时打开你的和勺子的,你的都加载完了,勺子的还在加载。可能是因为你的主页只有一篇文章,也没有其他侧边栏。但是打开你的网站真的很快!

    回复
  3. 佐仔

    WP Super Cache缓存插,后来取消了,不知你是否发现,你这篇文章还是显示只有两个评论,其它里面有多条评论了,这就是缓存不同步,按时间进行缓存的原因。

    回复
  4. 以前也用这个缓存,后来经常要修改点东西,但是他刷新要很久,也经常出现访客访问的是很旧的数据,除了推荐的设置挺复杂的所以我就放弃了。
    我这香港的虚拟主机你那边访问速度怎么样?我用测试的似乎要四五秒甚至七八秒,不过国内确实挺快了。

    回复
      1. 没想到速度还行啊。对了,你的head是不是整理过?我看源代码简洁的很啊,我这就多出来很多没用的,比如还要加
        载一个完全没用到的jquery库

        回复
          1. 没没没,那都是通过wp_head()生成的,我要是能注释早就注释了。那些估计是以前试插件残留下来的。

  5. 其实我“更正”下,这个插件应该不是实现“完全静态化”的,有一个叫cos html cache的插件那个是把页面生成为.html文件,这才是完全静态化,但是缺点更加明显:同步跟不上。所以我觉得完全静态化也没必要,毕竟博客还是动态的好

    回复
    1. 土木坛子 文章作者

      是完全静态化的,你可能是觉得没有看到HTML后缀,你去插件的目录下去看,全部是html文件存放着。由于已经缓存成HTML网页,所以至少省了WP程序生成页面的时间。然后压缩传输也能省一点时间。

      回复
      1. 我知道不是后缀的问题,用这个插件那会没现在折腾的熟练所以不大清楚他是怎么缓存的。现在我用数据库缓存,感觉好像差不多的样子,有空再重新折腾下这个最有名的wp缓存插件了。

        回复
    1. 土木坛子 文章作者

      你用这个过滤广告?我一般是 AdBlock,很好用呀。这也是我为什么还投放广告的原因,老网民肯定能过滤广告看不到,小白、新访客们才能看到广告。
      话说,自从博客被墙后,AdSense广告收入提高了不少——少了中国IP点击,博客采用极简界面后,点击率又提高了不少——可能是页面内容少了,广告能吸引到的注意力相对多了。这些都是我没有想到的……

      回复
      1. Captain

        是啊,ad muncher是全局的,adblock貌似只能在浏览器里拦截。所以我说你文章开头那个广告居然没拦下来很是奇怪啊。另外你为什么不把界面宽度加宽一点?我用27寸的显示器只有中间三分之一是播客内容,两侧都是空白,好浪费呐。

        回复
        1. 土木坛子 文章作者

          这个问题是这样的吧,我是限制了每行的字数,人眼每行最佳阅读的字数是45个汉字左右,所以,你的屏幕宽了,并不意味着每行的字数也要加宽。现在的屏幕变宽了并不是了为提高文字阅读体验。

          回复
  6. 独行猫儿

    静态化只在高流量的网站下有优化效果,主要用于解决php和其他动态语言消耗cpu计算的问题。一般情况下wordpress根本用不着静态化。

    回复
    1. 土木坛子 文章作者

      好吧,你们这些技术大牛们,我是说不过你们的。我的博客每天现在有几千的页面点击量,新访客占多数,我觉得还是有必要用缓存的方式展示这些内容,否则主机的开销还是有一些的。反正,就这样吧。

      回复
          1. Ryan

            我可不是调侃的意思,您千万别误会。我是认真的。希望在写作方面得到提升,这是我多年来的夙愿。以前总问别人如何提高,后来养成阅读习惯之后发现其实,当努力之后你想要的会自然而然的呈现出来。 目前还在努力当中。

          2. 土木坛子 文章作者

            就冲你这认真态度,我已经把你收进了我的RSS列表。我还不是博士哦,还是“生”的,这个称呼不能随便叫的~
            只要努力了,进步肯定会有的,自然一些。

  7. 依然王的人

    之前用http://whichloadsfaster.com/ 比较和坛子的打开速度,坛子都是比我快八、九倍的,今天测试已有一半次数快过坛子45% (569 ms / 392 ms) ,当然打开坛子依然是秒开,这用WP Super Cache插件还是有一些作用的。下面得学习坛子勤奋的写高质量博文。

    回复
      1. 土木坛子 文章作者

        已经知用户不缓存,所谓已知用户,肯定不是第一次访问,而且是留过言的访客,这样的情况下,访客的浏览器中已经有了缓存,CSS,JS文件已经保存在本地了,不需要再次下载加载,只需下载基本上的HTML文件,所以速度也是很快的,同时又获得的是动态内容,一定是最新的内容。

        回复

佐仔进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注