Как страшное включение кэширования работает на MediaWiki?

У нас есть небольшая вики-ферма (та же тема; шесть языков и она растет) и недавно мы обновили большинство шаблонов, чтобы использовать несколько слоев меташаблонов, чтобы облегчить обслуживание и удобочитаемость.

Мы хотим стандартизировать эти шаблоны для всех языков, поэтому большинство из них будут содержать один и тот же код на каждой вики. Вот почему, чтобы еще больше упростить обслуживание, мы рассматриваем возможность использования пугающего включения (точнее, подстановки), чтобы эти меташаблоны хранились только в одной вики и должны были обновляться только в этой вики, а не в каждой. одиночная версия.

(Примечание: если вы можете придумать идею получше, не стесняйтесь комментировать этот пост!)

Однако пугающее включение названо так из-за того, что оно пугающе неэффективно, поэтому мне нужно больше узнать о том, как контент, включенный таким образом, кэшируется MediaWiki.

Если я правильно понимаю, HTML-вывод страницы хранится в кеше парсера в течение $wgParserCacheExpireTime. Значение по умолчанию — 1 день, но безопасно увеличить его для малых и средних вики, потому что содержимое будет обновляться в любом случае, если обновляется сама страница или включенная страница (и в некоторых других незначительных случаях).

Также есть продолжительность кеша для пугающего включения: $wgTranscludeCacheExpiry. Хорошо, потому что вы не хотели бы делать этот HTTP-вызов каждый раз. Однако значение по умолчанию, равное 1 часу, не подходит для небольших вики-сайтов, на которых статьи можно просматривать только время от времени, что делает этот кеш абсолютно бесполезным.

  • Если страница A использует шаблон B, который включает шаблон C из другой вики, должна ли страница A полностью регенерироваться после превышения $wgTranscludeCacheExpiry? Или он по-прежнему может использовать кэш синтаксического анализатора шаблона B до тех пор, пока не будет превышено значение $wgParserCacheExpireTime?

  • Затем вы можете увеличить $wgTranscludeCacheExpiry до месяца, как и кеш парсера, но страница не будет обновляться автоматически, если включенный шаблон был, не так ли?

  • Если да, будет ли обновление страниц с использованием включенного шаблона единственным решением для обновления других вики?


person P-H    schedule 29.08.2014    source источник


Ответы (1)


ИМХО решение узнать простое: попробуйте! $wgScaryTranscluding используется редко, но те немногие, кто пытался его включить, сообщили, что у него очень мало проблемы. Существуют также альтернативы на основе JavaScript, см. руководство.

Очистка редко является большой проблемой: шаблон кросс-вики вряд ли будет содержать то, что вы абсолютно точно хотите удалить прямо сейчас. Если кеш кажется вам недостаточно агрессивным, установите его на неделю или месяц и посмотрите, не пойдет ли что-то не так. Илмари Каронен предлагает такой длинный кэш даже для HTML.

person Nemo    schedule 09.12.2014