MediaWiki的文件缓存(File Cache)在我们实际使用的网站中还是很重要的,可以让访问速度快很多,不过有些页面要求有一定的实时性,缓存过期时间不宜过长,我们以前都是设置的统一过期时间,然后部分页面不生成文件缓存,这些不生成文件缓存的页面往往成为了MySQL服务器中慢查询的来源。
今天先是想了一个办法,Linux服务器上设置crontab,定时执行一个批处理文件,来删除cache目录下的缓存文件,这样可以实现我们需要的对不同页面缓存不同的时间长度,但缺点是设置比较麻烦,而且执行磁盘查找、删除在数据量大的时候比较慢。
后来又想了个办法,在LocalSettings.php中针对不同的网址设置不同的$wgCacheEpoch,例如:
...... $request_uri = $_SERVER['REQUEST_URI']; if ( $request_uri == '/' || $request_uri == '/'.urlencode('首页') ){//固定几种网址 $wgCacheEpoch = max($wgCacheEpoch,date('YmdHis',strtotime('-2 hours')));//缓存过期时间为2小时 } elseif ( strpos($request_uri,urlencode('骗子')) != FALSE ) {//标题中包含'骗子'的网址 $wgCacheEpoch = max($wgCacheEpoch,date('YmdHis',strtotime('-1 day')));//缓存过期时间为1天 } else {//其它网址 $wgCacheEpoch = max($wgCacheEpoch,date('YmdHis',strtotime('-1 month'))); //缓存过期时间为1个月 } ......
这样
评论