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


Повышение производительности надстроек SharePoint, размещенных у поставщика

Вы можете повысить производительность надстройки SharePoint, размещенной у поставщика, ограничив количество и частоту удаленных вызовов к SharePoint. Слишком много вызовов к хост-сайту снижает производительность. Чтобы ограничить число удаленных вызовов, можно реализовать файлы cookie HTTP или локальное хранилище HTML5.

В примере Performance.Caching показано, как использовать файлы cookie HTTP и локальное хранилище HTML5 для кэширования данных. Пример включает две размещенные у поставщика надстройки, которые позволяют просматривать раздел "Обо мне " профиля пользователя, добавлять данные и сохранять их для последующего использования. Надстройка не обновляет сведения профиля пользователя; он кэширует его, чтобы его можно было использовать позже.

В одном примере для кэширования данных используются файлы cookie HTTP, а в другом — локальное хранилище HTML5.

Использование файлов cookie HTTP для кэширования

На начальной странице примера файла cookie HTTP в текстовом поле отображаются сведения из раздела Обо мне вашего профиля пользователя. Второе текстовое поле указывает, был ли создан новый файл cookie и когда истечет срок действия существующего файла cookie. Размер сведений, хранящихся в файлах cookie, не может превышать 4095 байт.

Данные, отображаемые в примере кэширования файлов cookie протокола HTTP

Данные, отображаемые в примере кэширования файлов cookie протокола HTTP

Файл app.js, который находится в папке Скрипты веб-проекта, определяет поведение кнопки Сохранить для последующего выполнения . Сначала код проверяет, включены ли файлы cookie в браузере, задавая тестовый файл cookie. Если файлы cookie включены, код определяет, хранятся ли данные профиля пользователя в файле cookie. Если это не так, он использует JSON для поиска сведений обо мне , сохранения их в файле cookie, а затем отображения информации в браузере.

Следующая функция задает файл cookie и дату окончания срока его действия.

function setCookie(key, value, expiry, path, domain, secure) {
    var todaysDate = new Date();
    todaysDate.setTime(todaysDate.getTime());

    if (expiry == "") { expiry = "1"; }

    // The following line sets for n number of days. For hours, remove * 24. For minutes, remove * 60 * 24.
    if (expiry) {
        expiry = expiry * 1000 * 60 * 60 * 24;
    }

    var newExpiry = new Date(todaysDate.getTime() + (expiry));

    document.cookie = key + "=" + escape(value) +
        ( ( expiry ) ? ";expires=" + newExpiry : "" ) +
        ( ( path ) ? ";path=" + path : "" ) +
        ( ( domain ) ? ";domain=" + domain : "" ) +
        ((secure) ? ";secure" : "");

    cachingStatus += "\n" + "Creating http cookie for AboutMe data...";
    cachingStatus += "\n" + "Cookie will expire " + newExpiry;
    $('#status').text(cachingStatus);
}

Использование локального хранилища HTML5 для кэширования

На начальной странице примера локального хранилища HTML5 отображаются сведения из раздела "Обо мне " профиля пользователя о кэшированных данных. В текстовом поле отображаются эти сведения, а также срок действия кэшированных сведений (если таковой есть).

Файл app.js, который находится в папке Скрипты веб-проекта, определяет поведение кнопки Сохранить для последующего выполнения . Сначала надстройка проверяет, включено ли локальное хранилище, с помощью следующей функции.

isHtml5StorageSupported = function () {
    try {
        return 'localStorage' in window && window['localStorage'] !== null;
    } catch (e) {
        return false;
    }
    return false;
}


Если поддерживается локальное хранилище, функция определяет, хранятся ли в нем сведения о профиле пользователя. Если это не так, он использует JSOM для поиска сведений обо мне , их локального хранения, а затем для отображения информации в браузере. В следующем коде сведения обо мне хранятся в ключе с именем aboutMeValue.

var aboutMeValue = personProperties.get_userProfileProperties()['AboutMe'];
    $('#aboutMeText').val(aboutMeValue);

    // Add to local storage.
    localStorage.setItem("aboutMeValue", aboutMeValue);
    setLocalStorageKeyExpiry("aboutMeValue");

    cachingStatus += "\n" + "Populated local storage with profile properties...";
    $('#status').val(cachingStatus);


Кнопка Очистить кэш удаляет этот ключ, ищет сведения обо мне в профиле пользователя и создает новый ключ локального хранилища для хранения этой информации. По умолчанию надстройка не задает время окончания срока действия, но файл app.js содержит следующую функцию, которая задает время окончания срока действия для кэшированных данных.

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 {
       
    }
}

Перед поиском сведений, хранящихся в локальном ключе хранилища, код использует функцию isKeyExpired , чтобы определить, истек ли срок действия ключа. Дополнительные сведения см . в разделе Настройка пользовательского интерфейса с помощью надстроек SharePoint, размещенных у поставщика.

См. также