Difference between revisions of "TemplatedPageList/ru"
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{ExtensionFromInfo|lang=ru|name=TemplatedPageList}} | {{ExtensionFromInfo|lang=ru|name=TemplatedPageList}} | ||
[[Category:Неполные описания расширений]] | [[Category:Неполные описания расширений]] | ||
+ | |||
+ | == Использование, установка == | ||
См. [[TemplatedPageList/|английскую справку]]. | См. [[TemplatedPageList/|английскую справку]]. | ||
Line 6: | Line 8: | ||
== Идея: кэширование == | == Идея: кэширование == | ||
− | Суть: кэшировать страницы со списками, сохранять зависимости списков в базу и инвалидировать кэш списков по зависимостям. После чего можно будет широко использовать эти | + | Суть: кэшировать страницы со списками, сохранять зависимости списков в базу и инвалидировать кэш списков по зависимостям. После чего можно будет широко использовать эти списки — повысится производительность. |
+ | |||
+ | Правда, [[IntraACL]] портит малину | ||
+ | * а) тотальным разделением кэша для разных пользователей, так как у них могут быть разные права и | ||
+ | * б) диким количеством запросов при проверке прав. Это всё, правда, лечится только рефакторингом IntraACL, который в данный момент в процессе. | ||
− | Второй | + | Второй вариант — не использовать стандартный кэш для списков, а поддерживать в базе данных сами списки, инкрементально обновляя их содержимое по зависимостям. Но в данном случае для нормального выигрыша по производительности нужно кэшировать именно готовый текст каждого пункта списка. В этом случае не надо отслеживать зависимостей от сортировки и не надо делить кэш по правам IntraACL — просто при выводе их нужно проверять. |
Типы зависимостей: | Типы зависимостей: | ||
Line 18: | Line 24: | ||
Зависимости: | Зависимости: | ||
− | * Создание/удаление/переименование страницы | + | * Создание/удаление/переименование страницы ⇒ сбрасываем списки по всем относящимся к странице зависимостям |
− | * При изменении categorylinks в LinksUpdate | + | * При изменении categorylinks в LinksUpdate ⇒ сбрасываем списки по категориям |
− | * При изменении шаблона | + | * При изменении шаблона ⇒ сбрасываем списки, использующие этот шаблон |
По сортировке: | По сортировке: | ||
− | * При каждой правке страницы | + | * При каждой правке страницы ⇒ сбрасываем сортируемые по lastedit, user, size списки по всем относящимся к странице зависимостям |
− | * При каждом показе страницы | + | * При каждом показе страницы ⇒ сбрасываем сортируемые по popularity списки по всем относящимся к странице зависимостям |
*: Либо при сортировке popularity вообще не кэшируем список | *: Либо при сортировке popularity вообще не кэшируем список | ||
− | * В расширении [[FavRate]] при голосовании за страницу | + | * В расширении [[FavRate]] при голосовании за страницу ⇒ сбрасываем сортируемые по rating списки по всем относящимся к странице зависимостям |
Latest revision as of 18:43, 27 August 2013
TemplatedPageList — расширение MediaWiki.
- Назначение: Наше расширение для вывода списков вики-страниц. Похоже на DPL, поддерживает вывод по шаблону и имеет интерфейс на спецстранице.
- Репозиторий: https://github.com/mediawiki4intranet/TemplatedPageList
- Домашняя страница: http://wiki.4intra.net/TemplatedPageList
- Авторы: User:VitaliyFilippov
- Лицензия: GPLv2.0+
- Дата создания: 2009-11-09
- Последняя версия: 2012-12-12
- Оценка расширения: Вероятно полезное (4)
Включение в сборку Mediawiki4Intranet:
- Дата включения: 2009-11-09
- Включённая версия: последняя
- Состояние доработок: Создано в рамках MediaWiki4Intranet
Использование, установка
См. английскую справку.
Идея: кэширование
Суть: кэшировать страницы со списками, сохранять зависимости списков в базу и инвалидировать кэш списков по зависимостям. После чего можно будет широко использовать эти списки — повысится производительность.
Правда, IntraACL портит малину
- а) тотальным разделением кэша для разных пользователей, так как у них могут быть разные права и
- б) диким количеством запросов при проверке прав. Это всё, правда, лечится только рефакторингом IntraACL, который в данный момент в процессе.
Второй вариант — не использовать стандартный кэш для списков, а поддерживать в базе данных сами списки, инкрементально обновляя их содержимое по зависимостям. Но в данном случае для нормального выигрыша по производительности нужно кэшировать именно готовый текст каждого пункта списка. В этом случае не надо отслеживать зависимостей от сортировки и не надо делить кэш по правам IntraACL — просто при выводе их нужно проверять.
Типы зависимостей:
- Пространство имён
- Категория
- Префикс
- Сортировка
- Шаблон списка
Зависимости:
- Создание/удаление/переименование страницы ⇒ сбрасываем списки по всем относящимся к странице зависимостям
- При изменении categorylinks в LinksUpdate ⇒ сбрасываем списки по категориям
- При изменении шаблона ⇒ сбрасываем списки, использующие этот шаблон
По сортировке:
- При каждой правке страницы ⇒ сбрасываем сортируемые по lastedit, user, size списки по всем относящимся к странице зависимостям
- При каждом показе страницы ⇒ сбрасываем сортируемые по popularity списки по всем относящимся к странице зависимостям
- Либо при сортировке popularity вообще не кэшируем список
- В расширении FavRate при голосовании за страницу ⇒ сбрасываем сортируемые по rating списки по всем относящимся к странице зависимостям