Pull to refresh

Разгоняем Sharepoint до скорости Highload интернет сайта

Reading time3 min
Views7.1K
Как известно, одиним из не очень приятных моментов при разработке интернет сайта на Sharepoint является его производительность. Но это не вердикт и с этим можно бороться.

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

Во-первых можно включать механизмы кеширования страниц 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
Tags:
Hubs:
+10
Comments39

Articles