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


Кэширование в Office SharePoint Server 2007

Содержание

  • Кэширование вывода

  • Кэширование объектов

  • Дисковое кэширование объектов BLOB

Приложение Microsoft Office SharePoint Server 2007 предоставляет расширенные возможности кэширования, позволяющие максимально повысить производительность веб-сайтов. В этой статье описаны различные доступные типы кэширования и методы оптимизации кэширования в соответствии с конкретными требованиями развертывания.

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

Тип кэширования Уровень Примечания

Кэширование вывода и профили кэша

Уровень отдельных страниц

Идеально подходит для активно посещаемых веб-сайтов, где не требуется часто предоставлять новый контент.

Кэширование объектов

Уровень контента и элементов управления отдельных веб-частей и полей

Включает кэширование запросов к спискам и кэширование переходов

Дисковое кэширование больших двоичных объектов (BLOB)

Уровень отдельных объектов BLOB

Поддерживает форматы GIF, JPG, JS, CSS и другие файлы изображений, кода и звуковые файлы, сохраняемые в виде объектов BLOB

Кэширование вывода

В приложении Office SharePoint Server 2007 используется технология кэширования вывода ASP.NET 2.0, позволяющая управлять расписанием и способами обслуживания контента страниц. При правильном использовании кэширования вывода можно значительно повысить пропускную способность и уменьшить время отклика на запросы пользователей.

Если на сайте используется технология ASP.NET, то HTML-разметка, которая создается при вызове каждой веб-страницы, кэшируется в кэше вывода ASP.NET на основе указанного профиля кэша. На активно посещаемом веб-сайте даже ежеминутное кэширование часто посещаемых страниц может обеспечить значительное увеличение пропускной способности. Если страница попадает в кэш вывода, то в течение указанного времени действия кэша последующие запросы этой страницы, осуществленные пользователями с аналогичными разрешениями, обслуживаются из кэша вывода без выполнения соответствующего исходного кода и элементов управления.

Примечание

Кэширование вывода можно использовать на сайте или в семействе сайтов только в том случае, если для семейства сайтов включена функция инфраструктуры публикации Office SharePoint Server, а для сайта включена функция публикации Office SharePoint Server. Чтобы включить и настроить кэширование вывода для семейства сайтов, следует щелкнуть ссылку Кэш вывода семейства сайтов на странице "Параметры сайта" для данного семейства сайтов. Для выполнения аналогичной процедуры для сайтов необходимо щелкнуть ссылку Кэш вывода сайта на странице "Параметры сайта" для данного сайта. Если функция инфраструктуры публикации Office SharePoint Server для семейства сайтов или функция публикации Office SharePoint Server для сайта не включена, то соответствующие ссылки Кэш вывода семейства сайтов и Кэш вывода сайта не появятся на странице "Параметры сайта", и включить или настроить кэширование вывода будет невозможно.

   

Дополнительные сведения о включении кэширования вывода см. в статье Кэширование вывода и профили кэша (https://go.microsoft.com/fwlink/?linkid=78928&clcid=0x419) .

Общие сведения о кэшировании вывода

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

Преимущества

  • Кэширование вывода идеально подходит для веб-сайтов, на которых не требуется ежеминутно обновлять контент. В такой среде можно отображать кэшированный вывод для разных пользователей без выполнения доступа к базе данных или повторного запуска программ или элементов управления, с помощью которых была изначально создана HTML-разметка веб-страницы.

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

Ограничения

  • При кэшировании вывода используется дополнительная память для кэширования HTML-разметки каждой кэшированной страницы. Убедитесь в наличии достаточного объема физической памяти, чтобы избежать разбиения памяти на страницы и других проблем с памятью.

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

  • Если кэширование вывода включено для пользователей, имеющих разрешение на запись в семействе сайтов, то эти пользователи могут видеть на веб-страницах этого семейства сайтов не самые актуальные данные — до тех пор, пока не истечет время действия кэшированных страниц вывода. Как правило, это не влияет непосредственно на контент веб-страницы, которую изменяет или просматривает пользователь, однако могут оказаться затронутыми объединенные данные из списка или библиотеки — например данные, представленные веб-частью библиотеки документов. Соответственно, следует включить кэширование вывода только для пользователей с разрешениями только на чтение, если пользователям с разрешениями на запись необходимо обеспечить предоставление полной текущей информации.

Поведение кэширования вывода

Можно указать поведение кэширования вывода на следующих уровнях:

  • семейство сайтов;

  • сайт;

  • макет страницы.

Администратор определенной фермы, семейства сайтов или сайта может оптимизировать поведение кэширования, применяя различные профили кэша на уровне, для которого доступны права администрирования. Например, наиболее посещаемой страницей сайта зачастую бывает домашняя страница, и для нее можно использовать отдельный макет страницы. Можно применить для этой страницы особый профиль кэша и переопределить поведение кэширования для всего семейства сайтов. И наоборот, можно настроить в профиле кэша для отдельного макета страницы увеличенный срок действия кэша. Это позволяет оптимизировать своевременность обновления данных домашней страницы в случаях, когда можно пожертвовать актуальностью данных ради повышения производительности. Для других страниц системы можно использовать другой профиль кэша с меньшим временем действия кэша.

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

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

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

Отключение макета страницы результатов поиска

  1. На сайте верхнего уровня семейства сайтов в меню Действия сайта выберите Параметры сайта и затем — Изменение параметров сайта.

  2. На странице параметров узла в разделе Администрирование семейства веб-узлов щелкните Кэш вывода семейства узлов.

  3. На странице Параметры кэша вывода для семейства сайтов установите флажок Макеты страниц могут использовать другой профиль кэша вывода страниц и нажмите кнопку ОК.

  4. На странице "Параметры узла" в разделе Коллекции щелкните Макеты страниц и главных страниц.

  5. На странице "Коллекция главных страниц" наведите курсор на ссылку SearchResults.aspx, щелкните появившуюся стрелку, затем в открывшемся меню щелкните Изменить свойства, а затем в появившемся диалоговом окне нажмите кнопку ОК.

  6. На странице "Коллекция главных страниц: SearchResults" в списке Профиль кэша для зарегистрированных пользователей щелкните Отключено и нажмите кнопку ОК.

  7. На странице "Коллекция главных страниц" наведите курсор на ссылку SearchResults.aspx, щелкните появившуюся стрелку, затем в открывшемся меню щелкните Вернуть.

  8. На странице "Вернуть" выберите вариант Основная версия (публикация) и нажмите кнопку ОК. Результаты поиска, использующие данный конкретный макет страницы, больше не будут кэшироваться.

Ограничения на байты исключительного пользования ASP.NET

Если кэширование вывода включено, может потребоваться расширение предела байтов исключительного пользования, используемого в ASP.NET 2.0 по умолчанию. Этот предел указывает платформе ASP.NET, когда необходимо производить очистку кэша вывода. Преждевременная очистка может привести к излишнему снижению производительности. Дополнительные сведения см. в статье Элемент "cache" для кэширования (схема параметров ASP.NET) (https://go.microsoft.com/fwlink/?linkid=78934&clcid=0x419) .

Версии кэшированной страницы

На некоторых веб-страницах могут отображаться незначительные отличия, в зависимости от пользователей или другой бизнес-логики. Возможности кэширования вывода можно расширить благодаря поддержке программируемого API-интерфейса, позволяющего удовлетворить потребность в различных методах кэширования разных объектов. Дополнительные сведения см. в статье Практическое руководство. Расширение кэширования с помощью обработчика событий VaryByCustom (https://go.microsoft.com/fwlink/?linkid=78935&clcid=0x419) .

Кэширование вывода и RSS-каналы веб-частей "Запрос содержимого"

Веб-части "Запрос содержимого" позволяют предоставлять RSS-каналы для отображаемых результатов. RSS-канал создается с помощью ASPX-страницы на сервере, предоставляющем XML-канал RSS на основе результатов, отображаемых веб-частью "Запрос содержимого".

Поскольку клиенты RSS зачастую запрашивают с сервера RSS-канал через определенные промежутки времени, например каждые 30 минут, важно, чтобы RSS-канал создавался успешно. Следовательно, на ASPX-странице для RSS-канала следует реализовать кэширование вывода. В исходном ASPX-файле будет отображена следующая строка:

<%@ OutputCache Duration="300" VaryByParam="xsl;web;page;wp" VaryByCustom="rights;feedresults"%>

Это означает, что по умолчанию система кэширует RSS-каналы "Запрос содержимого" каждые пять минут (300 секунд), кэширует уникальные версии RSS-каналов для каждой веб-части "Запрос содержимого" и кэширует уникальные версии RSS-каналов для пользователей с различными разрешениями и различными результатами каналов.

Если требуется настроить это кэширование вывода, можно создать собственную ASPX-страницу каналов, на которой реализуется та же логика, но используются другие параметры кэширования вывода. После этого для веб-части "Запрос содержимого" можно указать пользовательскую ASPX-страницу каналов вместо страницы по умолчанию.

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

Отключение кэша вывода для сайта центра поиска

  1. На сайте верхнего уровня семейства сайтов в меню Действия сайта выберите Параметры сайта и затем — Изменение параметров сайта.

  2. На странице параметров узла в разделе Администрирование семейства веб-узлов щелкните Кэш вывода семейства узлов.

  3. На странице "Параметры кэша вывода для семейства сайтов" в разделе Политика кэша вывода страниц установите флажок Узлы публикации могут использовать другой профиль кэша вывода страниц и нажмите кнопку ОК.

  4. На верхней панели навигации щелкните вкладку Поиск.

  5. На домашней странице центра поиска в меню Действия узла выберите пункт Параметры узла, а затем щелкните Изменение параметров узла.

  6. На странице "Параметры сайта" для сайта центра поиска в разделе Администрирование узла щелкните Кэш вывода узла.

  7. На странице "Параметры кэша вывода узла публикации" в разделе Профиль кэша для зарегистрированных пользователей выберите вариант Наследовать профиль "Отключено".

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

Кэширование объектов

Приложение Office SharePoint Server 2007 поддерживает кэширование определенных элементов страниц, таких как данные переходов и данные, доступ к которым осуществляется посредством запросов к спискам. Кэширование элементов страниц снижает потребность в извлечении данных поля из базы данных при каждом отображении страницы. Система кэширования также кэширует для страницы полные данные поля, за исключением данных для элементов управления веб-частей.

Настройка кэширования объектов

Для размера кэша объектов по умолчанию установлено значение 100 МБ для каждого семейства сайтов, но этот параметр можно изменить для каждого семейства сайтов в соответствии с характеристиками веб-сайта. Для настройки размера кэша объектов можно воспользоваться набором счетчиков производительности. Объект счетчика производительности называется "объект кэша публикации SharePoint". На основе эффективности работы кэш-памяти и изменения счетчиков удаления объектов можно установить оптимальный размер кэша объектов. При настройке данного ограничения воспользуйтесь приведенными ниже рекомендациями.

  • Начните с низкого значения (например, 200 МБ) и отслеживайте эффективность работы кэш-памяти и счетчик удаления объектов. Если эффективность работы кэш-памяти превышает 90 %, а уровень удаления объектов остается низким, то это, как правило, является признаком оптимального размера. Однако для настройки этого параметра также следует измерить время отклика пользователей для основных операций.

  • Если установить слишком большой размер, это может привести к нерациональному использованию объема памяти, необходимого для других типов кэша, например кэша вывода ASP.NET (при его наличии). Некоторые веб-части, такие как веб-часть "Запрос содержимого", хранят свои таблицы стилей XSLT в кэше вывода. Если размер кэша объектов слишком велик, то ASP.NET может очистить память кэша вывода, чтобы освободить место. После очистки может увеличиться нагрузка на процессор. Это особенно важно в том случае, если система использует 32-разрядную операционную систему, поскольку каждый рабочий процесс ограничен областью памяти приложения, составляющей 2 ГБ. Если установить слишком большой предел кэша объектов, то рабочему процессу IIS (w3wp) может не хватить памяти.

Кэширование запросов к спискам

Кэш объектов также используется для кэширования элементов, получаемых в результатах запросов к спискам. Эти запросы собирают элементы из различных списков и сайтов в семействе сайтов. Чаще всего эти запросы используются в веб-части "Запрос содержимого". Для каждого запроса к спискам требуется переход к серверу базы данных и обратно. Используя кэш объектов, можно значительно уменьшить количество переходов для обслуживания запросов к спискам, что позволяет повысить производительность таких функций, как веб-часть "Запрос содержимого", которая представляет результаты запроса к спискам.

Проверка обновлений

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

  • Путем проверки изменений в семействе сайтов. Если изменения отсутствуют, используются кэшированные результаты.

  • Путем ожидания определенного промежутка времени, в течение которого используются кэшированные результаты, а потом отправляется запрос на обновление кэша.

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

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

Настроить кэш запросов к спискам можно, выполнив следующую процедуру.

Настройка кэша запросов к спискам

  1. На домашней странице центра поиска в меню Действия сайта выберите пункт Параметры сайта, а затем щелкните Изменение параметров узла.

  2. На странице параметров узла в разделе Администрирование семейства веб-узлов щелкните Кэш объектов семейства сайтов.

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

  4. Для сохранения изменений нажмите кнопку ОК.

Число получаемых элементов

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

  • Если установить для этого множителя высокое значение, то будет загружаться больше объектов и потребляться больше памяти. Высокое значение соответствует веб-сайту, где у большого числа пользователей установлены разные разрешения для различных списков и элементов.

  • Если установить для этого множителя низкое значение, то будет загружаться меньше объектов и потребляться меньше памяти. Низкое значение соответствует веб-сайту, где для пользователей установлен одинаковый уровень доступа. В качестве примера можно привести анонимных пользователей на сайте Интернета.

Настройка множителя результатов запроса к спискам

  1. На домашней странице центра поиска в меню Действия сайта выберите пункт Параметры сайта, а затем щелкните Изменение параметров узла.

  2. На странице параметров узла в разделе Администрирование семейства веб-узлов щелкните Кэш объектов семейства сайтов.

  3. В поле Множитель запросов к спискам введите число, указывающее множитель элементов, загружаемых для запросов к спискам.

  4. Для сохранения изменений нажмите кнопку ОК.

Дисковое кэширование объектов BLOB

Дисковое кэширование управляет кэшированием больших двоичных объектов (BLOB) — например файлов изображений, звуковых и видеофайлов, а также фрагментов исходного кода. Дисковое кэширование снижает потребность в переходах к базе данных и обратно для доступа к объектам BLOB. Объекты BLOB однократно загружаются из базы данных и сохраняются на веб-серверах. Последующие запросы обслуживаются из дискового кэша и фильтруются по ролям безопасности.

Рекомендации

  • Размер дискового кэша можно настроить для каждого веб-приложения. Минимальным значением является 1 ГБ, и размер можно увеличить, введя нужное значение в гигабайтах. Убедитесь, что на диске достаточно пространства для приложения.

  • Существует ряд параметров, которые можно настроить для дискового кэша. В частности, обратите внимание на следующие два параметра.

    • Параметр "Максимальный возраст" указывает максимальное время в секундах, в течение которого браузер клиента кэширует объекты BLOB, загруженные на клиентский компьютер. Если возраст загруженных объектов со времени последней загрузки не превышен, то эти объекты не запрашиваются повторно до тех пор, пока не истечет время действия кэша. Для атрибута максимального возраста по умолчанию установлено значение 86400 секунд (т. е. 24 часа), но для него можно установить любое значение от нуля и выше. Чем больше это значение, тем дольше ожидает браузер перед загрузкой обновленных объектов.

    • Путь указывается в форме регулярного выражения, определяющего, какие файлы кэшируются на основе их расширений. По умолчанию в число расширений файлов входят GIF, JPG, PNG, CSS и JS. Если имеются особые типы файлов, на которые ссылаются веб-страницы, то необходимо добавить соответствующие расширения в кэш.

  • Дисковое кэширование применяется только к объектам из библиотеки документов. Если ресурсы хранятся вне библиотеки документов, например в папке на сайте, то такие объекты не обрабатываются дисковым кэшем даже в том случае, когда он включен для всего веб-приложения. Настройка дискового кэширования очень важна при необходимости управлять параметром максимального возраста ресурсов BLOB, загружаемых клиентским браузером. По умолчанию максимальный возраст всех объектов, хранящихся в Office SharePoint Server, равен нулю.