用MediaWiki的FileCache来脱离数据库运行网站
--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负载问题算是找到一个平衡的解决办法,为以后更大规模数据的实施做好了准备,值得庆祝一下!
标签:MediaWiki、FileCache。 |
相关内容:
|