Участник:X-romix/Соображения по кешированию

Материал из Викиреальностя
Перейти к: навигация, поиск

Для больших баз MediaWiki проблемой становится вопрос производительности: много обращений со стороны читателей или поисковых роботов. Поэтому окончательный внешний вид страницы желательно рендерить заранее (в момент записи страницы) и сохранять в кеше. При запросе читателя возвращать уже готовую версию из кеша, не обращаясь к СУБД. Эти функции реализованы при помощи файлового кеширования и кеширования при помощи SQUID.

Информация может возвращаться не из кеша в следующих случаях:

  • Залогиненный пользователь отображается вверху страницы.
  • Счетчик посещений сбивает кеш.
  • Кто-то изменил шаблон с параметрами (например, добавил новые поля в шаблон-карточку).
  • Кто-то изменил шаблон без параметров (например, навигационный шаблон).

Предложения, как избежать не попадания в кеш:

  • Отрисовывать залогиненного пользователя при помощи JavaScript (который, в свою очередь, может никуда не обращаться, а читать имя из Cookie).
  • Счетчик посещений рисовать картинкой или через AJAX (последнее, кстати, отсеет посещения роботов-поисковиков).
  • Если изменились шаблоны с параметрами (шаблоны-карточки, шаблоны-плашки и т.д.), то ничего не делать: там либо слегка меняется внешний вид, либо добавляются поля шаблона-карточки, которые все равно будут не задействованы.
  • Шаблоны без параметров (навигационные и пр.) кешировать как отдельные файлы, а на выдаче их присоединять к основному тексту, вместе с шапкой и подвалом страницы. Чтобы более эффективно кешировалось на клиенте, можно отображать их через iframe.

Это позволит ни разу не обращаться к базе SQL при выдаче страниц читателям (не считая счетчика заходов).