Pull to refresh

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

Reading time 3 min
Views 7.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
Comments 39
Comments Comments 39

Articles