TemplatedPageList/ru

From Wiki4Intranet
Jump to: navigation, search


Использование, установка

См. английскую справку.

Идея: кэширование

Суть: кэшировать страницы со списками, сохранять зависимости списков в базу и инвалидировать кэш списков по зависимостям. После чего можно будет широко использовать эти списки — повысится производительность.

Правда, IntraACL портит малину

  • а) тотальным разделением кэша для разных пользователей, так как у них могут быть разные права и
  • б) диким количеством запросов при проверке прав. Это всё, правда, лечится только рефакторингом IntraACL, который в данный момент в процессе.

Второй вариант — не использовать стандартный кэш для списков, а поддерживать в базе данных сами списки, инкрементально обновляя их содержимое по зависимостям. Но в данном случае для нормального выигрыша по производительности нужно кэшировать именно готовый текст каждого пункта списка. В этом случае не надо отслеживать зависимостей от сортировки и не надо делить кэш по правам IntraACL — просто при выводе их нужно проверять.

Типы зависимостей:

  • Пространство имён
  • Категория
  • Префикс
  • Сортировка
  • Шаблон списка

Зависимости:

  • Создание/удаление/переименование страницы ⇒ сбрасываем списки по всем относящимся к странице зависимостям
  • При изменении categorylinks в LinksUpdate ⇒ сбрасываем списки по категориям
  • При изменении шаблона ⇒ сбрасываем списки, использующие этот шаблон

По сортировке:

  • При каждой правке страницы ⇒ сбрасываем сортируемые по lastedit, user, size списки по всем относящимся к странице зависимостям
  • При каждом показе страницы ⇒ сбрасываем сортируемые по popularity списки по всем относящимся к странице зависимостям
    Либо при сортировке popularity вообще не кэшируем список
  • В расширении FavRate при голосовании за страницу ⇒ сбрасываем сортируемые по rating списки по всем относящимся к странице зависимостям