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個月 } ......
這樣
评论