启用MediaWiki的File Cache功能,生成静态HTML页面

出自James Qi

跳转到: 导航, 搜索

所在位置:首页 > 日志 > 启用MediaWiki的File Cache功能,生成静态HTML页面

--James Qi 2008年10月21日 (二) 15:40 (CST)

  因为持续受到服务器负载过高的困扰,这几天干脆把内容更新的事情都交给同事去做,我来专心看看如何解决服务器负载的问题,除了自己研究以外,也找公司外面的朋友小许、以前的同事小钱进行了很多咨询。

  先是对MediaWiki配置做了一些调整,例如将全文检索关掉、页面计数器关掉,看到还是负载高后又把$wgJobRunRate进一步降低到0.01,好像还有一些效果。

  对CDN也进行了一些了解,但CDN基本也都是用Squid,主要解决全国各地访问的问题,我们目前Apache负载高的问题可能还解决不了,这个想法也作罢。

  统计了一下,目前Squid的缓存命中率也在70%左右,还正常,但就是剩下的30%就让Apache服务器受不了,今天对Squid的配置文件又进行了一些参数调整,加大了很多参数,希望能将命中率提高到80%甚至90%,这样对后端Apache会好一些。想尝试用Squid的反向代理来做负载均衡,但没有测试成功。

  至于小许、小钱怀疑的MySQL问题,暂时也顾不过来。

  小钱以前在搜狐工作过,说他们的社区BBS等动态页面也都尽量进行了静态化,否则很难承受绝大的访问量。我们以前只是用了Apache的ReWrite做了一个URL模拟静态化,当然是不能减少负载的。我记得maintenance工具中有一个DumpHTML,可以批量生成整个网站的所有HTML静态页面,但似乎都是分布在多个目录中的.html文件,还不知道如何访问,以为采用后会导致URL改变,就没有继续试用。

  今天先拿个已经暂停的网站 http://english.18dao.org/ 来做实验,按照MediaWiki官方网站中的File Cache说明,很快就设置好了文件缓存功能,发现URL没有任何改变,只是从HTML源文件中可以看到是cache的结果,这还是不错的。虽然官方网站的说明中指出File Cache还有一些更新机制方面的欠缺,不如Squid好,但我为了能尽快让后端的Apache负载降下来,就将邮政编码查询电话区号查询两个内容很固定的网站的文件缓存功能打开了,相当于有File Cache和Squid两级缓存。

  人工搜索网站暂时还没有这样尝试,因为用到太多扩展、动态的模板了,File Cache支持不太好,还是就用Squid。

  小钱问了我们的服务器配置情况后,建议升级服务器,还要找程序员优化MediaWiki的代码。这些工作以后都是有必要的,逐步来创造条件解决吧。


附在LocalSettings.php中的设置:

$wgUseFileCache = true; /* default: false */
$wgFileCacheDirectory = "$IP/cache";
$wgShowIPinHeader = false;

设置定期更新Cache内容:

$wgCacheEpoch = date( "Ym01000000" ); #每月一日零点
$wgCacheEpoch = date( "Ymd000000" ); #每天零点
$wgCacheEpoch = date( "YmdH0000" ); #每小时整点

增加一个“刷新”选单(注意:需要设置MediaWiki:Refresh为“刷新”二字):

# add page-refresh tab
#
$wgHooks['SkinTemplateContentActions'][] = 'wfContentRefreshHook';
 
function wfContentRefreshHook( &$content_actions ) {
    global $wgRequest, $wgRequest, $wgTitle;
 
    $action = $wgRequest->getText( 'action' );
 
    if ( $wgTitle->getNamespace() != NS_SPECIAL ) {
        $content_actions['purge'] = array(
            'class' => false,
            'text' => wfMsg( 'refresh' ),
            'href' => $wgTitle->getLocalUrl( 'action=purge' )
        );
    }
    return true;
}

标签:MediaWiki, File Cache, HTML
相关内容:
  1. 2008年12月5日 (五) 23:00: MediaWiki的StringFunctions扩展 ‎(76次浏览)
  2. 2008年11月6日 (四) 22:47: 启用Squid和MediaWiki的File Cache双重缓存 ‎(158次浏览)
  3. 2008年10月18日 (六) 10:39: 关闭一些以前的Wiki网站 ‎(325次浏览)
  4. 2008年10月7日 (二) 22:31: MediaWiki系统的Robots.txt ‎(176次浏览)
  5. 2008年9月28日 (日) 22:48: 用Google Ajax Search API弥补MediaWiki中文站内搜索缺陷 ‎(235次浏览)
  6. 2008年9月27日 (六) 16:48: MediaWiki百度收录的问题 ‎(285次浏览)
  7. 2008年9月26日 (五) 09:32: MediaWiki的页面自动编辑保存AutoEdit ‎(230次浏览)
  8. 2008年9月20日 (六) 22:03: 再次用301永久重定向转移网站域名 ‎(228次浏览)
  9. 2008年8月14日 (四) 02:37: MediaWiki克隆繁体网站 ‎(359次浏览)
  10. 2008年5月16日 (五) 17:29: 用301永久重定向来转变域名 ‎(1,501次浏览)
  11. 2008年4月9日 (三) 23:27: 超强的MediaWiki扩展功能:DPL动态页面列表 ‎(965次浏览)
  12. 2008年3月19日 (三) 14:21: 在MediaWiki平台下模拟数据库功能 ‎(1,083次浏览)
  13. 2008年3月8日 (六) 00:18: 重新设计一把刀人工搜索的质量检验过程 ‎(793次浏览)
  14. 2007年12月24日 (一) 13:37: MediaWiki中重新生成搜索文本索引rebuildtextindex.php ‎(968次浏览)


别名:MediaWiki的文件缓存功能MediaWiki也可以生产静态页面让MediaWiki生产HTML页面降低服务器负载

用户留言:

留言: --117.85.59.107 2008年12月30日 (三) 20:28 (CST)

James 老师,您好

我看了您这篇教程,在自己的wiki上设置后,并未出现理想效果,顺便说下,我的.htaccess文件里也设置了生成伪静态:

RewriteEngine On
RewriteRule ^[^:]*\. - [L]
RewriteRule ^[^:]*\/ - [L]
RewriteRule ^/*$ /index.php?title=首页 [L,QSA]
RewriteRule ^(.+)$ /index.php?title=$1 [L,QSA]
尽管再加上您教程上的设置,但我的wiki仍未实现静态化。可是,很奇怪,如果我输
http://www.wxseo.com/首页/
却能直接访问,此表示静态化已经完成。

但通过浏览器浏览仍然出现了一大串的字符,并未实现静态化,请问是什么问题?怎么可以解决?

我的wiki小站无锡百科望能指明解决方法。


留言: --58.214.168.215 2009年1月1日 (五) 21:40 (CST)

问题已解决

回复:你好!解决了就好,如果以后有问题再交流。--59.173.100.159 2009年1月2日 (六) 21:43 (CST)
新增留言

个人工具