Поделиться через


Рекомендации по производительности в модели надстроек SharePoint

Подходы, которые вы используете для обеспечения оптимальной производительности в SharePoint, отличаются в новой модели надстройки SharePoint, чем в коде полного доверия. В типичном сценарии с кодом полного доверия (FTC) или решением фермы большинство операций с кодом выполняется в коде серверной объектной модели SharePoint.

В сценарии модели надстройки SharePoint для выполнения кода используется клиентская объектная модель SharePoint (CSOM) и (или) REST API SharePoint.

Основное различие между двумя моделями заключается в серверном коде и коде на стороне клиента. В модели надстройки SharePoint, так как код выполняется через клиенты, происходит дополнительный сетевой трафик. Минимизация количества круговых путей вызова API на сервере SharePoint повысит производительность надстроек SharePoint и уменьшит объем ресурсов, потребляемых сайтом SharePoint.

Кроме того, в модели надстройки SharePoint, так как код выполняется через клиенты, до получения ответа могут возникать длительные задержки. Кэширование данных для длительных операций (например, API профилей пользователей) может сократить время, необходимое для возврата сведений или получения подтверждения завершения процесса.

Рекомендации высокого уровня

Как правило, мы хотели бы предоставить следующие общие рекомендации, чтобы обеспечить оптимальную производительность sharePoint в новой модели надстройки SharePoint.

  • Сведите к минимуму вызовы API на стороне клиента к серверу SharePoint.
  • Используйте методы кэширования на стороне сервера и клиента для хранения информации.
  • Не рекомендуется хранить идентификаторы клиентов, clientSecrets, имена пользователей, пароли, маркеры или другие конфиденциальные сведения о безопасности в кэшах.

Параметры для обеспечения оптимальной производительности с помощью SharePoint

У вас есть несколько вариантов обеспечения оптимальной производительности в SharePoint.

  • Использование кэширования на стороне клиента
  • Использование кэширования на стороне сервера

Использование кэширования на стороне клиента

В этом шаблоне для кэширования данных используются методы кэширования на стороне клиента, такие как HTML5 LocalStorage и файлы cookie. Сведения, хранящиеся в этих расположениях, используются для определения необходимости вызовов API к серверу SharePoint.

  • Этот шаблон хранит данные, возвращаемые из вызовов API SharePoint, в кэшах на стороне клиента.
  • Этот шаблон использует клиентский код (JavaScript) для оценки данных, хранящихся в кэшах на стороне клиента.
  • Файлы cookie ограничены хранением 4095 байт данных.
    • Файлы cookie имеют встроенный механизм истечения срока действия данных.
  • Локальный журнал HTML5 ограничен 5 МБ данных.
    • Html5 LocalStorage не имеет встроенного механизма истечения срока действия данных. Однако такой механизм истечения срока действия можно быстро и легко реализовать в JavaScript.

      setLocalStorageKeyExpiry См. функции и isLocalStorageExpired в файле JavaScriptApp.js в файле Performance.LocalStorage (пример O365 PnP).

      Задание ключа срока действия в LocalStorage:

      function setLocalStorageKeyExpiry(key)
      {
          // Check for expiration config values
          var expiryConfig = localStorage.getItem(expiryConfigKey);
      
          // Check for existing expiration stamp
          var existingStamp = localStorage.getItem(key + expiryKeySuffix);
      
          // Override cached setting if a user has entered a value that is different than what is stored
          if (expiryConfig != null)
          {
              var currentTime = Math.floor((new Date().getTime()) / 1000);
              expiryConfig = parseInt(expiryConfig);
      
              var newStamp = Math.floor((currentTime + expiryConfig));
              localStorage.setItem(key + expiryKeySuffix, newStamp);
      
              // Log status to window
              cachingStatus += "\n" + "Setting expiration for the " + key + " key...";
              $('#status').val(cachingStatus);
          }
          else
        {
      
          }
      }
      

      Проверьте, истек ли срок действия ключа срока действия в LocalStorage:

      function isLocalStorageExpired(key, keyTimeStampName)
      {
        // Retrieve the example setting for expiration in seconds
        var expiryConfig = localStorage.getItem(expiryConfigKey);
      
        // Retrieve the example setting for expiration in seconds
        var expiryStamp = localStorage.getItem(keyTimeStampName);
      
        if (expiryStamp != null && expiryConfig != null) {
      
            // Retrieve the expiration stamp and compare against specified settings to see if it is expired
            var currentTime = Math.floor((new Date().getTime()) / 1000);
      
            if (currentTime - parseInt(expiryStamp) > parseInt(expiryConfig)) {
                cachingStatus += "\n" + "The " + key + " key time stamp has expired...";
                $('#status').val(cachingStatus);
                return true;
            }
            else
            {
                var estimatedSeconds = parseInt(expiryStamp) - currentTime;
                cachingStatus += "\n" + "The " + key + " time stamp expires in " + estimatedSeconds + " seconds...";
                $('#status').val(cachingStatus);
                return false;
            }
        }
        else
        {
            //default
            return true;
        }
      }
      

Для каких случаев он подходит?

Если необходимо использовать API клиентской объектной модели SharePoint ECMA (sp.js) и оценить данные на стороне клиента, чтобы определить, нужно ли выполнять вызовы API.

Начало работы

В разделе Performance.Caching (пример O365 PnP) показано, как реализовать кэширование LocalStorage и на основе файлов cookie на стороне клиента в модели надстройки, а также приведены ссылки на несколько примеров и статей.

Использование кэширования на стороне сервера

В этом шаблоне для доступа к кэшируемым данным используются такие методы кэширования на стороне сервера, как сеанс и оценка файлов cookie на стороне сервера. Сведения, хранящиеся в этих расположениях, используются для определения необходимости вызовов API к серверу SharePoint.

  • Этот шаблон хранит данные, возвращаемые из вызовов API SharePoint, в кэшах на стороне сервера.

  • Этот шаблон использует код на стороне сервера для оценки данных, хранящихся в расположениях на стороне сервера.

    • Расположения на стороне сервера могут включать данные на основе сеансов, кэши на стороне сервера, хранящиеся в ОЗУ, или другие сторонние технологии кэширования на основе сервера.
  • Этот шаблон использует код на стороне сервера для оценки данных, хранящихся в файлах cookie.

  • Файлы cookie ограничены хранением 4095 байт данных.

    • Файлы cookie имеют встроенный механизм истечения срока действия данных.

    См. метод CookieCheckSkip в классе Customizer.aspx.cs в OD4B. Configuration.Async (пример O365 PnP), чтобы узнать, как серверный код используется для оценки файлов cookie.

Реализация собственного уровня кэша "человек в середине"

Иногда имеет смысл создать собственный уровень пользовательского кэша. Хорошим примером является возвращение сведений из профиля пользователя. Иногда выполнение API профилей пользователей занимает много времени. Чтобы обеспечить пользователям быстрый пользовательский интерфейс, можно создать удаленное задание таймера для запроса службы профилей пользователей и хранения информации в различных хранилищах данных. Затем можно создать службу, которая позволит запрашивать хранилища данных с помощью вызовов JavaScript из надстроек SharePoint.

Azure имеет множество различных механизмов хранения, которые могут использоваться для хранения информации, многие из которых работают очень быстро, например хранилище таблиц и хранилище BLOB-объектов. Azure также позволяет создать веб-приложение для размещения службы и защиты всех данных и службы с помощью того же Azure Active Directory, что и Office 365 клиента SharePoint, или даже локальной среды SharePoint с включенным DirSync.

Для каких случаев он подходит?

  • Когда необходимо использовать API клиентской объектной модели (Microsoft.SharePoint.Client.dll) управляемого кода SharePoint и оценить данные или файлы cookie на стороне сервера, чтобы определить, нужно ли выполнять вызовы API.
  • Если у вас есть длительные операции, такие как веб-задание Azure, они должны выполняться только один раз за заданный период времени, независимо от того, сколько раз пользователь пытается инициировать операцию.
    • Применение настраиваемых OneDrive для бизнеса конфигураций является хорошим примером такого сценария.

Начало работы

В разделе Performance.Caching (пример O365 PnP) описывается реализация кэширования LocalStorage и на основе файлов cookie в модели надстройки, а также приведены ссылки на несколько примеров и статей.

Образцы PnP

Область применения

  • Office 365 Multi Tenant (MT)
  • Office 365 Dedicated (D)
  • Локальное развертывание SharePoint 2013