Cache w MediaWiki

Z funus.net

MediaWiki może sobie buforować (cache'ować) pewne dane, zmniejszając liczbę odwołań do bazy lub generowanych dynamicznie elementów stron, a w efekcie czasami nieco przyspieszając działanie.

Są trzy rodzaje, czy może raczej obszary zastosowań, cache'a w MediaWiki:

  • object cache — główny cache;
  • parser cache — parser wikitekstu sobie też coś cache'uje;
  • message cache — komunikaty (?).

Każdy z nich można skonfigurować osobno, wybierając jeden ze sposobów cache'owania:

  • CACHE_NONE — wyłączone;
  • CACHE_ANYTHING — użyj dowolnego, działającego sposobu;
  • CACHE_MEMCACHED — używa serwera memcached;
  • CACHE_DB — cache'owane dane są umieszczane w bazie;
  • CACHE_ACCEL;
  • CACHE_DBA;

Czy i jak dany cache ma działać, ustawia się za pomocą zmiennych konfiguracyjnych:

  • $wgMainCacheType dla object cache;
  • $wgParserCacheType dla parser cache;
  • $wgMessageCacheType dla message cache.

W praktyce można ograniczyć się do przypisania odpowiedniej wartości pierwszej z tych zmiennych, a pozostałe ustawiając na CACHE_ANYTHING. Przykładowo, chcąc użyć memcached, można w LocalSettings.php napisać:

$wgMemCachedServers  = array( "127.0.0.1:11211" );  # namiary na serwer memcached
$wgMainCacheType     = CACHE_MEMCACHED;
$wgParserCacheType   = CACHE_ANYTHING;
$wgMessageCacheType  = CACHE_ANYTHING;

W tej sytuacji najprawdopodobniej wszystkie trzy rodzaje cache będą używać memcached. Gdy wyłączony zostanie "main cache", to pozsotałe dwa użyją bazy danych lub innej, dostępnej metody. Raczej nie ma sensu wyłącząc message cache'a czy parser cache'a, bo wiki staje się bez nich potwornie nieefektywna.

Poza wyżej wymienionymi jest jeszcze cały szereg innych zmiennych konfiguracyjnych, za pomocą których można wpłynąć na proces buforowania danych wiki.