Участник:X-romix/Соображения по кешированию
Материал из Викиреальностя
Для больших баз MediaWiki проблемой становится вопрос производительности: много обращений со стороны читателей или поисковых роботов. Поэтому окончательный внешний вид страницы желательно рендерить заранее (в момент записи страницы) и сохранять в кеше. При запросе читателя возвращать уже готовую версию из кеша, не обращаясь к СУБД. Эти функции реализованы при помощи файлового кеширования и кеширования при помощи SQUID.
Информация может возвращаться не из кеша в следующих случаях:
- Залогиненный пользователь отображается вверху страницы.
- Счетчик посещений сбивает кеш.
- Кто-то изменил шаблон с параметрами (например, добавил новые поля в шаблон-карточку).
- Кто-то изменил шаблон без параметров (например, навигационный шаблон).
Предложения, как избежать не попадания в кеш:
- Отрисовывать залогиненного пользователя при помощи JavaScript (который, в свою очередь, может никуда не обращаться, а читать имя из Cookie).
- Счетчик посещений рисовать картинкой или через AJAX (последнее, кстати, отсеет посещения роботов-поисковиков).
- Если изменились шаблоны с параметрами (шаблоны-карточки, шаблоны-плашки и т.д.), то ничего не делать: там либо слегка меняется внешний вид, либо добавляются поля шаблона-карточки, которые все равно будут не задействованы.
- Шаблоны без параметров (навигационные и пр.) кешировать как отдельные файлы, а на выдаче их присоединять к основному тексту, вместе с шапкой и подвалом страницы. Чтобы более эффективно кешировалось на клиенте, можно отображать их через iframe.
Это позволит ни разу не обращаться к базе SQL при выдаче страниц читателям (не считая счетчика заходов).