Как известно, одиним из не очень приятных моментов при разработке интернет сайта на Sharepoint является его производительность. Но это не вердикт и с этим можно бороться.
В этой статье я коротко опишу основные возможности по кэшированию, используя которые можно существенно ускорить работу портала.
Во-первых можно включать механизмы кеширования страниц Sharepoint через веб интерфейс.
Возможно включать кэширование объектов и использовать кэширование в разработанных вами веб-частях и элементах управления.
Существует BLOB cache и сжатие средствами IIS.
Необходимо делать оптимизацию страниц и мастер страниц, то есть отключать core.js и core.css там, где они не нужны, убирать ненужные элементы управления. Помещать ваши собственные сборки в GAC и обязательно подписывать их. Использовать
Теперь давайте по-порядку.
Управляется на уровне коллекции узлов sharepoint. Кэширование вывода страницы может быть прервано для мастер страниц и дочерних узлов. Вы можете иметь разные настройки кэширования для анонимных и аутентифицированных пользователей. В стандартной поставке содержит 4 профиля, которые подходят для большинства сценариев. Страница применения профиля кэширования к коллекции сайтов выглядит следующим образом:
А теперь представим, что нам необходимо, чтобы при изменении какого-либо параметра в строке адреса (query string) страница бралась не из кэша, а отображалась и получала информацию заново. Этого можно достичь написав в поле Vary by Query String Parameters символ “*”
Что делать, если на странице должны быть элементы управления с динамической информацией при этом вся остальная страница должна кэшироваться? Нужно использовать Post-Cache Substitution control (http://www.nikhilk.net/PostCacheSubstitution.aspx)
Blob Cache помещает элементы SharePoint на диск на сервере. Опция отключена. Для включения необходимо отредактировать web.config.
Активирован по умолчанию. Используется для быстрого доступа к элементам:
По умолчинию кэш объектов составлет 100MB и это можно изменить через веб-интерфейс.
Добавить сжатие для JS и CSS можно выполнив в командной строке на сервере:
Совет для тех, кого просто бесит много лишнего текста в возвращаемой браузером странице потому что он эстет или гик (ненужное зачеркнуть), или стоит задача сделать страницы совсем маленькими и легкими. Для этого пишется IHttpModule в котором в методе Init страницы убирается из возвращаемого результата всё лишнее. Только убрать надо именно лишнее, т.е. то без чего ваша страница продолжит нормально работать ;)
В подготовке статьи участвовали мозг, НЛО и материалы с MSDN:
Output Caching and Cache Profiles
Object Caching
Disk-based Caching for Binary Large Objects
Creating and Registering a Custom HTTP Module
Post-Cache Substitution
В этой статье я коротко опишу основные возможности по кэшированию, используя которые можно существенно ускорить работу портала.
Во-первых можно включать механизмы кеширования страниц Sharepoint через веб интерфейс.
Возможно включать кэширование объектов и использовать кэширование в разработанных вами веб-частях и элементах управления.
Существует BLOB cache и сжатие средствами IIS.
Необходимо делать оптимизацию страниц и мастер страниц, то есть отключать core.js и core.css там, где они не нужны, убирать ненужные элементы управления. Помещать ваши собственные сборки в GAC и обязательно подписывать их. Использовать
<SharePointWebControls:ScriptLink runat="server"/>
и <SharePoint:CssLink ID="CssLink1" runat="server" />
для подключения css и js вместо аналогов из html.Теперь давайте по-порядку.
Кэширование возвращаемой страницы (Output caching)
Управляется на уровне коллекции узлов sharepoint. Кэширование вывода страницы может быть прервано для мастер страниц и дочерних узлов. Вы можете иметь разные настройки кэширования для анонимных и аутентифицированных пользователей. В стандартной поставке содержит 4 профиля, которые подходят для большинства сценариев. Страница применения профиля кэширования к коллекции сайтов выглядит следующим образом:
А теперь представим, что нам необходимо, чтобы при изменении какого-либо параметра в строке адреса (query string) страница бралась не из кэша, а отображалась и получала информацию заново. Этого можно достичь написав в поле Vary by Query String Parameters символ “*”
Что делать, если на странице должны быть элементы управления с динамической информацией при этом вся остальная страница должна кэшироваться? Нужно использовать Post-Cache Substitution control (http://www.nikhilk.net/PostCacheSubstitution.aspx)
Кэширование файлов (Blob cache)
Blob Cache помещает элементы SharePoint на диск на сервере. Опция отключена. Для включения необходимо отредактировать web.config.
Кэширование запросов и объектов (Object cache)
Активирован по умолчанию. Используется для быстрого доступа к элементам:
- Навигация и структура портала
- Поля и элементы списков
- Данные отображаемые в Content by Query web part и д.р.
По умолчинию кэш объектов составлет 100MB и это можно изменить через веб-интерфейс.
Сжатие IIS
Добавить сжатие для JS и CSS можно выполнив в командной строке на сервере:
cscript adsutil.vbs set w3svc/filters/compression/gzip/hcfileextensions "htm" "html" "txt" "js" "css"
cscript adsutil.vbs set w3svc/filters/compression/deflate/hcfileextensions "htm" "html" "txt" "js" "css"
iisreset
IHttpModule и жесткая оптимизация
Совет для тех, кого просто бесит много лишнего текста в возвращаемой браузером странице потому что он эстет или гик (ненужное зачеркнуть), или стоит задача сделать страницы совсем маленькими и легкими. Для этого пишется IHttpModule в котором в методе Init страницы убирается из возвращаемого результата всё лишнее. Только убрать надо именно лишнее, т.е. то без чего ваша страница продолжит нормально работать ;)
Заключение
В подготовке статьи участвовали мозг, НЛО и материалы с MSDN:
Output Caching and Cache Profiles
Object Caching
Disk-based Caching for Binary Large Objects
Creating and Registering a Custom HTTP Module
Post-Cache Substitution