Difference between revisions of "TemplatedPageList/ru"

From Wiki4Intranet
Jump to: navigation, search
(Replaced content with "{{ExtensionFromInfo|lang=ru|name=TemplatedPageList}} Категория:Неполные описания расширений")
Line 1: Line 1:
 
{{ExtensionFromInfo|lang=ru|name=TemplatedPageList}}
 
{{ExtensionFromInfo|lang=ru|name=TemplatedPageList}}
[[Категория:Неполные описания расширений]]
+
[[Category:Неполные описания расширений]]
 +
 
 +
См. [[TemplatedPageList/|английскую справку]].
 +
 
 +
== Идея: кэширование ==
 +
 
 +
Суть: кэшировать страницы со списками, сохранять зависимости списков в базу и инвалидировать кэш списков по зависимостям. После чего можно будет широко использовать эти списки — повысится производительность. Правда, [[IntraACL]] портит малину а) тотальным разделением кэша для разных пользователей, так как у них могут быть разные права и б) диким количеством запросов при проверке прав. Это всё, правда, лечится только рефакторингом IntraACL, который в данный момент в процессе.
 +
 
 +
Второй вариант — не использовать стандартный кэш для списков, а поддерживать в базе данных сами списки, инкрементально обновляя их содержимое по зависимостям. Но в данном случае для нормального выигрыша по производительности нужно кэшировать именно готовый текст каждого пункта списка. В этом случае не надо отслеживать зависимостей от сортировки и не надо делить кэш по правам IntraACL — просто при выводе их нужно проверять.
 +
 
 +
Типы зависимостей:
 +
* Пространство имён
 +
* Категория
 +
* Префикс
 +
* Сортировка
 +
* Шаблон списка
 +
 
 +
Зависимости:
 +
* Создание/удаление/переименование страницы => сбрасываем списки по всем относящимся к странице зависимостям
 +
* При изменении categorylinks в LinksUpdate => сбрасываем списки по категориям
 +
* При изменении шаблона => сбрасываем списки, использующие этот шаблон
 +
 
 +
По сортировке:
 +
* При каждой правке страницы => сбрасываем сортируемые по lastedit, user, size списки по всем относящимся к странице зависимостям
 +
* При каждом показе страницы => сбрасываем сортируемые по popularity списки по всем относящимся к странице зависимостям
 +
*: Либо при сортировке popularity вообще не кэшируем список
 +
* В расширении [[FavRate]] при голосовании за страницу => сбрасываем сортируемые по rating списки по всем относящимся к странице зависимостям

Revision as of 17:50, 17 April 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 списки по всем относящимся к странице зависимостям