Когда вы работаете с платформой Office 365, а затем с SharePoint Online, на каком-то этапе возникает необходимость организовать хранение статических изображений, а также кодов CSS или JavaScript, которые нужно кэшировать так, чтобы быстродействие сайта не опускалось ниже допустимых пределов. И здесь на помощь приходят сети доставки содержимого, часто именуемые CDN (от английского content delivery networks).

Сегодня применение CDN позволяет обеспечивать эффективную доставку значительной доли интернет-трафика по всему миру. Что, в сущности, представляют собой сети CDN?

Сеть доставки содержимого — это распределенная платформа, состоящая из серверов, которые напрямую взаимодействуют с запросами на поставку веб-содержимого, поступающими от конечных пользователей. Она выступает в качестве посредника между сервером содержимого, известным также как источник, и конечными пользователями, или клиентами. В результате многократной загрузки таких общеупотребительных объектов, как значки, снижается пропускная способность сетей, а этот ресурс целесообразно использовать для загрузки важного персонального содержимого, скажем, электронной почты или документов. Поскольку платформа Office 365 построена на архитектуре, включающей CDN, значки, сценарии и другие универсальные элементы содержимого можно загружать с серверов, расположенных недалеко от клиентских компьютеров, так что загрузка этих объектов выполняется быстрее. В результате ускоряется доступ к персональному содержимому пользователей, которое хранится в центрах обработки данных Office 365.

Весь комплекс Office 365 использует сети CDN в интересах своих компонентов. В основном он задействует CDN от Akamai (https://www.akamai.com/us/en/cdn/) и от Microsoft Azure (https://docs.microsoft.com/en-us/azure/cdn/). Оба решения позволяют работать с ресурсами, расположенными по всему миру, и обеспечивают предоставление интернет-услуг в отдаленных уголках планеты. Хранящееся в них содержимое включает общие сценарии Office 365, файлы и изображения. К примеру, когда вы регистрируетесь на портале portal.office.com, время загрузки страницы сокращается за счет того, что изображения поступают на ваш компьютер из ближайшей сети CDN. Другой пример: при использовании пакета Office 365 ProPlus время загрузки новейшей версии Office сокращается вследствие того, что фрагменты кода, обеспечивающие установку продукта, хранятся в сети CDN. В сетях CDN хранятся и некоторые патентованные материалы, такие как видеофайлы для Office 365 Video. После выгрузки подобных материалов в сеть файлы шифруются и хранятся в зашифрованном формате с помощью Azure Media Services. А когда видеоплеер Office 365 считывает эти видеоматериалы, они первым делом кэшируются в ближайшей сети CDN и только после этого загружаются на ваш компьютер; в результате время загрузки видео сокращается.

Меня могут спросить, какой же выигрыш в производительности можно здесь получить. Если мы произведем загрузку сайта SharePoint Online и будем использовать при этом средства отладки нашего браузера, то увидим, насколько повысится быстродействие в случае кэширования всех элементов. Диаграмма на рисунке 1 показывает, сколько времени ушло на загрузку стандартной библиотеки Modern UI SharePoint Library с 10 документами.

 

Время на загрузку стандартной библиотеки Modern UI SharePoint Library с 10 документами
Рисунок 1. Время на загрузку стандартной библиотеки Modern UI SharePoint Library с 10 документами

Если бы мы использовали решение с использованием кэша, то получили бы статистику как на рисунке 2. Обратите внимание на уменьшение объема и сокращение времени загрузки примерно на секунду.

 

Загрузка с использованием кэша
Рисунок 2. Загрузка с использованием кэша

Здесь возникает одна трудность. Дело в том, что хранение всех компонентов на внешнем носителе в сети CDN само по себе представляет проблему — я имею в виду организацию приема-передачи и внешнее подключение к сети CDN. Однако загрузка может осуществляться значительно быстрее, чем в случае считывания данных с диска и собственно с сайта всякий раз при возникновении такой необходимости.

Радует то обстоятельство, что мы можем использовать продукт независимого поставщика Microsoft Azure или даже функцию Preview, доступную через Office 365. Пользоваться сетями доставки содержимого средствами Office 365 сегодня почти так же просто, как выделять пространство внутри SharePoint, скажем, для библиотеки документов и далее отображать ее с помощью PowerShell. Для решения этой задачи нужно предварительно установить оболочку SharePoint Online Management Shell, которую можно загрузить по адресу: https://www.microsoft.com/en-us/download/details.aspx? id=35588

Далее требуется перейти по URL-адресу SharePoint Online Administra­tion, предварительно выполнив следующие действия:

  1. Запустить оболочку SharePoint Online Management Shell.
  2. Ввести команду для передачи учетных данных SharePoint Online (экран 1).

 

Передача учетных данных SharePoint Online
Экран 1. Передача учетных данных SharePoint Online

Получив приглашение, введите учетные данные, как показано на экране 2.

 

Ввод учетных данных
Экран 2. Ввод учетных данных

Проверьте значение переменной $creds (экран 3).

 

Проверка значения переменной $creds
Экран 3. Проверка значения переменной $creds

Используя добавленные учетные данные, подключитесь к службе SharePoint Online Service (экран 4).

 

Подключение к службе SharePoint Online Service
Экран 4. Подключение к службе SharePoint Online Service

После подключения выполните команду Get-SPOTenant и проверьте значения свойств «PublicCdn…» (экран 5).

 

Запуск команды Get-SPOTenant
Экран 5. Запуск команды Get-SPOTenant

Как видите, по умолчанию эта функция не активирована, поэтому ее нужно активировать и установить другие свойства. Для активации сети доставки содержимого и назначения свойств используйте команду Set-SPOTenant (экран 6).

 

Активация сети доставки содержимого
Экран 6. Активация сети доставки содержимого

В заключение нам нужно назначить библиотеку SharePoint Document Library, которую вы хотите задействовать внутри своего сайта, свойству New-SPOPublicCdnOrigin. Лично я использую вновь созданную библиотеку с именем Assets (экран 7).

 

Библиотека для использования внутри сайта
Экран 7. Библиотека для использования внутри сайта

Для запуска команды просто введите в указатель URL прямую ссылку на библиотеку документов внутри SharePoint Online, как показано на экране 8.

 

Команда для ссылки на библиотеку
Экран 8. Команда для ссылки на библиотеку

В результате система создаст сеть доставки содержимого и возвратит идентификатор, который понадобится вам для обращения к файлам, хранящимся внутри этой сети. Чтобы увидеть данный идентификатор, выполните команду Get-SPOPublicCdnOrigins (экран 9).

 

Просмотр идентификатора сети доставки содержимого
Экран 9. Просмотр идентификатора сети доставки содержимого

Далее возвращенный идентификатор ID необходимо использовать при попытке считывания любого элемента содержимого, хранящегося внутри данной библиотеки. При этом следует применять следующий формат:

https://publiccdn.sharepointonline.com/{Tenant Name}/{CDNID}/{Library Name}

К примеру, внутри моего тестового абонента указывающий на файл URL выглядит следующим образом:

https://mysampletenant.sharepoint.com/mysampletenant/1315650bf112f74bc1ddac154d849ea46aae75cb1510803c6e67a75a78960eb07392d45/assets/image.jpg

Не существует никакого магического способа, с помощью которого данный URL-адрес становился бы доступным любому пользователю. По состоянию на сегодня к файлам из сети доставки содержимого можно обращаться только из среды SharePoint Online. Если вы хотите проверить справедливость этого утверждения, не внося изменений в свой сайт SharePoint Online, можете использовать отладчик Fiddler и добавить заголовок к запросу с помощью следующего формата:

Referer: https://mysampletenant.sharepoint.com

Вот и все, легко и просто. Великолепное подспорье для разработчиков решений в среде SharePoint Online, предполагающее повторное использование и кэширование различных данных в формате CSS, изображений и даже сценариев JavaScript.