用MediaWiki的FileCache来脱离数据库运行网站

来自Jamesqi
跳转至: 导航搜索

--James Qi 2010年3月6日 (六) 15:32 (CST)

  前些天虽然把dumpHTML这个扩展程序运行成功,能完全脱离mysql和php运行,也实验了修改Apache的MIME设置让浏览者直接访问.html.gz文件,但URL与原来不一样,而且是多达5层目录,非常不利于SEO,这个程序本来也是用于离线浏览的,怪不得人家。

  想到用Apache的.htaccess或者httpd.conf中的重定向功能来让dumpHTML生成的静态文件保持与以前一样的结构不是不可能,但需要看apache中是否可以设置计算网址的rewrite规则,而且要弄懂扩展程序中的目录结构规律,还要修改扩展程序让文件直接的链接变得和动态网站一样,这都需要对php程序相当懂才行,我自己瞧了半天也不行。

  再次想到FileCache,如果能利用起来的话,至少不需要修改生成静态文件的程序,因为内部链接都是保持不变的。可以设法通过修改rewrite规则或者用Php程序来实现,用rewrite规则的话有涉及到目录的变换很麻烦,记得以前MediaWiki官方网站中说过FileCache有Emergency fallback功能,也就是数据库无法连接时临时用文件缓存顶替,这其实也就是不读数据库而保持了URL与动态网站的一致性啊。

  我以前也测试过把数据库连接写错,但没有任何输出,找不到问题,今天在LocalSettings.php中打开debug log功能,一点点查看,后来把$wgMainCacheType改为默认的CACHE_NONE后终于看到了文件缓存,原来以前把$wgMainCacheType改为CACHE_DB后如果找不到数据库的话,就无任何反应了,现在去掉这个缓存后,再连接不上数据库就读取以前的文件缓存。

  补充:注意将以前调用的其它扩展程序也全部去掉,以免出错不显示缓存内容。

  这个功能真是不错,介于纯静态HTML文件和动态系统之间,可以完全脱离MySQL运行,但需要php来做URL转换等工作,有几点做一下笔记:

  • 读取数据库失败后看到的静态页面下方有红色放大字体的缓存提示、数据库报错信息和Google搜索框,看上去太扎眼了,需要修改includes/db/Database.php中对应部分来修改和删除下方的提示;
  • 在MediaWiki-1.15.0下测试读取.html文件缓存成功,又测试.html.gz的文件缓存,也没有问题;
  • 所有动态的链接点击后都会出现缓存提示,这个以后也可以设法改为专门的提示信息;
  • 直接读取根目录,也会出现缓存提示,可以添加一个跳转的index.html或者用rewrite来重定向到“首页”;
  • 这个办法是满足了URL不变前提来脱离MySQL修改最小的,如果希望进一步提高速度,还可以考虑专门修改php程序或者用rewrite等其它方式来实现。

  本来已经因为影响MySQL负载而废掉了的IP树这个网站,现在又重新使用这种办法打开了,断开数据库直接访问以前dumpFileCache.php生成的.html文件,看到效果还不错。以后可以让动态页面进行建站调试和后期修改完善、用静态HTML文件来对外提供浏览,并设法让更新的过程做得方便灵活。

  折磨了好几年的MySQL负载问题算是找到一个平衡的解决办法,为以后更大规模数据的实施做好了准备,值得庆祝一下!Face-001.gif

标签:MediaWikiFileCache
相关内容:
  1. 2010-11-10 22:20:28 MediaWiki-1.15升级到1.16.0步骤
  2. 2010-11-04 22:52:58 开启MediaWiki的搜索建议(Search Suggest)功能
  3. 2010-11-03 11:26:02 MediaWiki-1.15.0升级到1.16.0中出现的问题
  4. 2010-11-02 23:52:05 MediaWiki-1.15准备升级到1.16
  5. 2010-10-22 22:29:00 想写一本关于MediaWiki的书,有人需要吗?
  6. 2010-09-20 11:33:29 直接操作MediaWiki的MySQL数据库
  7. 2010-09-04 00:20:09 修改模板对付MediaWiki及扩展程序的Bug
  8. 2010-08-31 00:47:49 分割大容量MediaWiki数据库
  9. 2010-07-08 23:08:13 用HTML和站间链接减小MediaWiki数据库记录
  10. 2010-06-12 12:27:01 将数据导入MediaWiki进行到底
  11. 2010-05-20 22:01:46 导入大量名录数据到MediaWiki网站的例子
  12. 2010-05-05 15:06:09 不懂PHP编程也可以修改MediaWiki程序
  13. 2010-04-03 22:45:40 MediaWiki导入XML数据中需要转义的字符
  14. 2010-04-02 00:38:01 用MediaWiki搭建多语言网站群框架
  15. 2010-04-01 16:05:48 在美国VPS上升级MediaWiki

关于“用MediaWiki的FileCache来脱离数据库运行网站”的留言:

目前暂无留言

新增相关留言