Кэш blob не включен в этом веб приложении
Microsoft SharePoint Server 2010 можно использовать для построения различных бизнес решений от порталов совместной работы и архивов записей до интернет сайтов. Какой бы вариант вы не выбрали, вы все равно будете заинтересованы в приемлемой скорости работы решения и вот здесь, понимание принципов работы кэша не будет лишним. Основная задача кэша обеспечить более быстрое отображение вашего портала конечным пользователям. Но у любой монеты есть две стороны, а посему вам необходимо знать как преимущества, так и недостатки различных видов кэша.
В данной статье мы поговорим о трех видах кэша. Каждый из них имеет уникальный функционал помогающий расти вашему SharePoint Server. Однако, кэш не панацея, каждый вид кэша имеет свои компромиссы, и далеко не факт, что все виды кэша подойдут конкретно вашему сценарию. Бездумное включение кэша без правильной настройки, скорее всего не приведет к ожидаемому повышению производительности.
Любая установка SharePoint Server состоит из экземпляра Microsoft SQL Server и как минимум одного Web Front-End сервера. Когда пользователи запрашивают с SharePoint Server данные, (например, страницу или документ) WFE сервер получает из SQL все необходимые данные и на основе их обрабатывает пользовательский запрос. И хотя это гарантирует пользователю получение самой актуальной информации, такая ситуация сказывается на повышенном трафике между SQL и WFE серверами, что в свою очередь влияет на скорость работы конечного пользователя.
Кэш SharePoint Server работает на Web Front-End серверах, каждый вид кэша сохраняет локальную копию данных, чтобы по мере возможности, обслуживать клиентов, используя локальный кэш, уменьшая количество данных передаваемых с SQL сервера и нагрузку на собственные процессоры.
BLOB кэш.
BLOB кэш понижает нагрузку на SQL Server за счет сохранения содержимого запрошенных файлов (в основном частей страницы вроде JavaScript, CSS и картинок) на жестких дисках WFE сервера. Когда приходит новый запрос на файл, который уже был кэширован, BLOB кэш вместо обращения на SQL Server возвращает файл с диска.
Когда вы разрабатываете веб сайты SharePoint, существует несколько мест хранения содержимого страниц. Они могут храниться на файловой системе WFE сервера (обычно в директории _layouts) или в библиотеке SharePoint. Файлы, которые хранятся в каталоге _layouts могут быть считаны с диска достаточно быстро, но если файлы необходимо обновить, администратор должен изменить их на каждом WFE сервере. Хранение в библиотеке SharePoint дает свои преимущества, теперь не только администраторы фермы могу добавлять и обновлять содержимое, но и пользователи. Но поскольку все что хранится в библиотеке находится в SQL , а за счет извлечения данных из SQL скорость получения их будет ниже. Итак, при хранении файла в SharePoint и использовании кэша BLOB, доступ к содержимому предоставляется быстро при этом существует возможность централизованного управления.
Но есть и нюансы. При добавлении нового файла осуществляет в пять раз больше запросов к SQL серверу нежели в ситуации с отключенным BLOB кэшем. При этих дополнительных обращениях извлекается информация о разрешениях и других метаданных для безопасной и надежной работы кэша. Кроме того, чтобы избежать возврата клиенту неактуального контента, BLOB кэш будет убирать из кэша файлы, если существует вероятность их устаревания. Естественно после этого произойдет повторное кэширование файла, что снова скажется на обращениях к SQL.
Как уже было сказано BLOB кэш особенно полезен при кэшировании больших мультимедийных файлов. Сам SharePoint оптимизирован для работы с небольшими файлами. Он может обработать файлы меньше FileReadChunkSize (100KB) за одно обращение, а файлы до 5 MB LargeFileChunkSize подаются непосредственно с SQL без дисковой буферизации с низкой задержкой. Файлы больше 5 MB SharePoint буферизирует на диске WFE сервера до возврата пользователю. Это бережет память, но сказывается на задержке возврата. BLOB кэш может уменьшить задержку в этой ситуации. Когда файл закэширован в BLOB он возвращается также быстро, как будто он находится непосредственно на IIS.
Логическая архитектура и расположение.
BLOB кэш работает на каждом WFE сервере фермы. Точнее каждое веб-приложение и каждый виртуальный сервер имеем собственный BLOB кэш. В данном случае под виртуальным сервером подразумевается IIS Web Site, ну а в SharePoint Server, как правило, каждое веб-приложение связано с одним виртуальным сервером. В один момент времени на одном виртуальном сервере может работать только один экземпляр BLOB кэша. Это значит что BLOB кэш не может быть использован с Веб-садом. (Веб-сад или web garden это пул приложений , который использует для обработки запросов более одного процесса запросов более одного процесса w3wp.exe )
Если веб-приложение SharePoint расширено, а оно как правило расширяется при использовании разных способов аутентификации для одного портала, то второй виртуальный сервер будет обрабатываться собственным экземпляром BLOB кэша. Поэтому BLOB кэш включается для каждой зоны отдельно. Например, данные, запрашиваемые внутренними пользователями, кэшируются, а данные запрашиваемые внешними пользователями (по External Url) соответственно нет. И хотя содержимое, предоставляемое внешним и внутренним пользователям идентично, наличия двух экземпляров кэша не избежать.
Механизм наполнение кэша.
Файлы с определенными расширениями попадают в BLOB кэш по мере их запроса пользователями. Список расширения настраивается и может быть сконфигурирован под конкретные задачи. При первом возврате файла из BLOB кэша на маленьких файлах может наблюдаться задержка по времени чуть больше, чем при обычном возврате SharePoint. С другой стороны большие файлы подаются быстрее из-за выполняемой кэш BLOB оптимизации. Файл начинает кэшироваться при считывании первых байт с SQL Server. Данные возвращается клиенту, в то время как остававшаяся их часть еще продолжает грузиться с сервера баз данных. Естественно это справедливо только для первого запроса, поскольку последующие разы данные подаются непосредственно из кэша BLOB.
Кэш BLOB может обрабатывать несколько запросов к одному файлу через доступность данных в кэше для всех запросов. Это происходит, даже если файл не был еще полностью получен из SQL Server. Например, ссылка на видео доклада (500MB), хранящегося на SharePoint Server, рассылается по электронной почте сотрудникам компании. Если одновременно большое количество пользователей перейдет по ссылке, то при отключенном кэше к SQL Server будет осуществлено множество запросов. (по одному для каждого пользователя) Не трудно догадаться как это скажется на производительности. С включённым кэшем, видео будет получено из SQL единожды каждым WFE сервером и даже если оно не успеет закэшироваться полностью, будет использовано для обслуживания всех запросов. Вывод напрашивается сам собой – BLOB кэш необходимым для обслуживания больших файлов на сервере SharePoint.
Хранение данных и размер кэша на диске.
В операционной системе Windows присутствует ограничение в 260 символов в пути для файла. Поскольку BLOB кэш добавляет дополнительные уникальные строк в пути файлов кэша, то вполне реальна ситуация когда при записи файла на диск этот предел будет превышен. Поэтому нужно постараться избегать чрезмерно длинных URL на портале SharePoint. Если придерживаться рекомендации, то для нормального кэширования файлов не следует делать ссылки на портале длиннее 160 символов.
В дополнение к дисковому пространству, BLOB кэш требует небольшой объем оперативной памяти для поддержания индекса файлов на диске. Каждая запись в индекс использует порядка 800 байт памяти. В большинстве случаев расходуемая BLOB кэшем память будет являться небольшой частью общей памяти, задействованной SharePoint. Однако, если в кэше BLOB требуется хранить сотни тысяч файлы файлов, то вопрос о потребности в памяти нужно будет планировать с учетом вышесказанного.
Стойкость BLOB кэша при перезапуске пула приложений.
Кэш BLOB является единственным стойким кэшем, а это означает, что он выживет при перезапуске или выключении пула приложений IIS. Это происходит, потому что индекс периодически пишется на диск. Сериализованный индекс составляет приблизительно одну треть от размера индекса в памяти. Как и все операции ввода-вывода размер индекса влияет на продолжительность сериализации и десериализации. Очень большой BLOB кэш содержит сотни тысяч элементов, поэтому процесс переписи их в индексе может занять больше минуты. Пока идет процесс сериализации, новые элементы не могут быть добавлены в кэш. Это значит, что если поступили запросы на файлы, которые еще не в кэше, то клиенту придется ждать до тех пор пока процесс сериализации не завершится. Если индекс чрезвычайно большой (миллионы объектов) время сериализации может превысить таймаут клиентского запроса и запрос будет отброшен.
Механизм проверки кэша.
Для BLOB кэша также настраивается максимальный размер, дабы избежать излишнего расходования свободного места на диске. Когда суммарные размер файлов в кэше превышает установленные ограничения, BLOB кэш удаляет наименее используемые файлы до тех пор пора вес закэшированных файлов не понизится до 70% от разрешенного объёма. Этот процесс называется уплотнением. Уплотнение достаточно «дорогой» процесс с точки зрения производительности, связано это возможным повторным кэшированием удаленных файлов. Периодический запуск уплотнения позволяет избавиться от «непопулярных» файлов и освободить место для более часто используемых. Если уплотнение происходит часто, о это говорит только о нехватке места под кэш, посмотреть периодичность этой операции можно по счетчику “Total number of cache compactions” в группе SharePoint Disk-Based Cache. Выделение дополнительного места при частом уплотнении является хорошим решением, в идеальных условиях размера кэша должно хватать для помещения всех популярных запросов.
Другой способ удаление закэшированных файлов это сброс кэша. Когда кэш сбрасывается, создается новая папка, но старый кэш остается. Это позволяет завершить существующие запросы к старому кэшу. Старый кэш удаляется позже через определенное время. (конфигурируемый интервал) Кэш может быть сброшен по нескольким причинам: если при запуске индекс не смогу произвести корректную десериализацию, изменилась пользовательская политика для веб-приложения, не может быть прочитана контентная база данных. Так же кэш может быть очищен вручную при вызове из PowerShell функции Microsoft.SharePoint.Publishing.PublishingCache.FlushBlobCache().
Аутентификация и BLOB кэш.
BLOB кэш оптимизирован для анонимного возврата файлов. Когда запрашивается файл доступный анонимно, BLOB кэш возвращает его еще до попыток аутентификации.
Преимущества от подобного принципа работы можно получить в двух случаях.
1. К сайту разрешен анонимный доступ
2. Часто запрашиваемые файлы хранятся в библиотеках, у которых включен параметр AllowEveryoneViewItems.
При создании портала на основе шаблона Publishing Portal создается две библиотеки с установленным параметром AllowEveryoneViewItems. Это библиотеки “Images” и “Site Collection Images”. В любом случае даже если не используется анонимный доступ BLOB кэш будет работать, но WFE серверу придется обращаться на SQL сервер для проверки пользовательских разрешений. (ACL)
MCT/MVP Илья Рудь
Основан на документе “SharePoint Server Caches Overview ”
APPLIES TO: 2013 2016 2019 Subscription Edition SharePoint in Microsoft 365
This article describes how to configure the disk-based BLOB cache, the page output cache profiles, and the object cache for a web application in SharePoint Server.
You enable and configure the BLOB cache, and make configuration changes to the page output cache profiles and the object cache in the Web.config file in the web application to which you want to apply those changes. The changes you make to the Web.config file will be applied to all site collections within the web application.
SharePoint Server includes cache performance monitors that let you verify that the farm cache settings are correct and that the caching is running at maximum performance. For more information, see Monitor cache performance in SharePoint Server 2016.
Configuring the page output cache profiles and the object cache at the web application level will supersede any configuration that was made by site administrators at the site collection level or below.
There may be times when the BLOB cache becomes out of sync with the content. For example, after you restore a content database, the BLOB cache will be out of sync with the content. To correct that situation, you must flush the BLOB cache. For more information, see Flush the BLOB cache in SharePoint Server.
О быстродействии жёстких дисков и оперативной памяти
Разница между временным хранением данных в оперативной памяти и постоянным хранением на жёстком диске проявляется в скорости работы с информацией, в стоимости носителей и в близости их к процессору.
Время отклика оперативной памяти составляет десятки наносекунд, в то время как жёсткому диску нужны десятки миллисекунд. Разница в быстродействии дисков и памяти составляет шесть порядков!
Одна миллисекунда равна миллиону наносекунд
Профили кэша вывода страниц
В кэше вывода страниц хранятся выводимые данные страницы. В нем также хранятся разные версии кэшированной страницы, в зависимости от разрешений пользователей, запрашивающих эту страницу. Параметры кэша вывода страниц можно настроить на уровне семейства сайтов, уровне сайта и для отдельных макетов страниц. По умолчанию. кэш вывода страниц отключен.
Кэш вывода страниц использует профили кэша, которые указывают продолжительность хранения элементов в кэше. Вы можете использовать разные профили кэша для анонимных и прошедших проверку подлинности пользователей, что оптимизирует применение кэша в зависимости от методов проверки подлинности, разрешенных на сайте.
Вы можете настроить параметры профилей кэша для веб-приложения, изменив файл Web.config на сервере приложений. Параметры профилей, заданные на уровне веб-приложения, используются для всех профилей кэша в семействах сайтов этого веб-приложения.
Существует известная проблема с веб-частью "Поиск контента". Параметр SendContentBeforeQuery в веб-части не работает должным образом на страницах, на которых используется кэширование выводимых данных. Эта проблема устранена в накопительном пакете обновления для SharePoint Server 2013 за март 2013 г. Дополнительные сведения см. в статье 2767999 базы знаний Майкрософт Описание обновления для SharePoint Server 2013 за 12 марта 2013 г.
Чтобы использовать кэш вывода страниц и связанные параметры профилей кэша, необходимо включить компонент публикации на сайте.
▍Веб-ускорители
Веб-ускоритель (web accelerator) — это прокси-сервер, который уменьшает время доступа к сайту. Он делает это, заранее запрашивая у сервера документы, которые, вероятнее всего, понадобятся клиентам в ближайшем будущем. Подобные серверы, кроме того, могут сжимать документы, ускорять выполнение операций шифрования, уменьшать качество и размер изображений, и так далее.
Простой веб-сервер
Теперь, когда мы обсудили роль кэширования в базовых механизмах компьютерных систем, рассмотрим пример, иллюстрирующий применение концепций кэширования при взаимодействии клиента, представленного веб-браузером, и сервера, который, реагируя на запросы клиента, отправляет ему некие данные. В самом начале у нас имеется простой веб-сервер, который, отвечая на запрос клиента, считывает данные с жёсткого диска. При этом представим, что между клиентом и сервером нет никаких особых систем кэширования. Вот как это выглядит.
Простой веб-сервер
При работе вышеописанной системы, когда клиент обращается напрямую к серверу, а тот, самостоятельно обрабатывая запрос, читает данные с жёсткого диска и отправляет клиенту, без кэша всё-таки не обходится, так как при работе с диском будет задействован его буфер.
При первом запросе жёсткий диск проверит кэш, в котором, в данном случае, ничего не будет, что приведёт к так называемому «промаху кэша». Затем данные считаются с самого диска и попадут в его кэш, что соответствует предположению, касающемуся того, что эти данные могут понадобиться снова.
При последующих запросах, направленных на получение тех же данных, поиск в кэше окажется успешным, это — так называемое «попадание кэша». Данные в ответ на запрос будут поступать из дискового буфера до тех пор, пока они не будут перезаписаны, что, при повторном обращении к тем же данным, приведёт к промаху кэша.
Статьи о параметрах кэша
Доступны следующие статьи о параметрах кэша.
Настройка параметров кэша для веб-приложения в SharePoint Server — описывает настройку кэша BLOB на диске, профилей кэша выходных страниц и кэша объекта для веб-приложения.
Настройка учетных записей пользователей кэша объектов в SharePoint Server . Описывает, как настроить учетные записи пользователей кэша объекта.
Очистка кэша BLOB в SharePoint Server — описание очистки содержимого кэша BLOB для веб-приложения.
ПРИМЕНЯЕТСЯ К: 2013 2016 2019 по подписке SharePoint в Microsoft 365
В этой статье описывается настройка кэша BLOB на основе диска, профилей кэша выходных страниц и кэша объектов для веб-приложения в SharePoint Server.
Включение и настройка кэша BLOB, а также изменение конфигурации для профилей кэша вывода страниц и кэша объектов осуществляются в файле Web.config того веб-приложения, к которому требуется применить эти изменения. Изменения, вносимые в файл Web.config, применяются ко всем семействам сайтов в данном веб-приложении.
SharePoint Сервер содержит мониторы производительности кэша, которые проверяют правильность параметров кэша фермы и максимальную производительность кэшинга. Дополнительные сведения см. в рубке Monitor cache performance in SharePoint Server 2016.
Настройка профилей кэша вывода страниц и кэша объектов на уровне веб-приложения переопределяет любую конфигурацию, примененную администраторами сайтов на уровне семейства сайтов или ниже.
Дополнительные сведения см. в дополнительных сведениях о операциях параметров кэша в SharePoint Server.
Кэш больших двоичных объектов
SharePoint Сервер предоставляет кэш на диске, который хранит файлы, используемые веб-страницами для быстрой загрузки в браузере, и снижает нагрузку на сервер базы данных при их загрузке. Эти файлы называются двоичными большими объектами (BLOBs), а кэш — кэшом BLOB. Кэш BLOB хранится непосредственно на жестком диске переднего веб-сервера. При первом назвав веб-страницу, эти файлы копируется из базы данных в кэш на жестком диске сервера, и все последующие запросы для этих файлов затем подаются из кэша жесткого диска сервера. По умолчанию кэш BLOB отключен и должен быть включен для использования функций, которые он предоставляет. Если включить кэш BLOB на переднем веб-сервере, вы уменьшите нагрузку на сервер базы данных SharePoint Server, созданный запросами на чтение из веб-браузеров.
Кэш BLOB-объектов можно включить в файле Web.config веб-приложения, к которому вы хотите его применить. Изменения в файле Web.config применяются ко всем семействам сайтов этого веб-приложения. Сведения о кэше BLOB см. в группе Plan for caching and performance in SharePoint Server.
▍Пограничное кэширование
Обратные прокси-серверы расположены близко к серверам. Существует и технология, при использовании которой кэширующие серверы располагаются как можно ближе к потребителям данных. Это — так называемое пограничное кэширование (edge caching), представленное сетями доставки контента (CDN, Content Delivery Network). Например, если вы посещаете популярный веб-сайт и загружаете какие-нибудь статические данные, они попадают в кэш. Каждый следующий пользователь, запросивший те же данные, получит их, до истечения срока их кэширования, с кэширующего сервера. Эти серверы, определяя актуальность информации, ориентируются на серверы, хранящие исходные данные.
Прокси-серверы в инфраструктуре обмена данными между клиентом и сервером
Кэширование и прокси-серверы
В компьютерных сетях прокси-серверы могут быть представлены специальным аппаратным обеспечением или соответствующими приложениями. Они играют роль посредников между клиентами и серверами, хранящими данные, которые этим клиентам требуются. Кэширование — это одна из задач, которую они решают. Рассмотрим различные виды прокси-серверов.
Кэш результатов анонимного поиска
Кэш результатов анонимного поиска, в основном, используется сайтами публикации, предоставляющими доступ анонимным пользователям. Он сохраняет результаты поиска таких пользователей и повторно применяет их для последующих запросов, совпадающих с первоначальным запросом. Это улучшает производительность страниц сайта, использующих веб-часть поиска контента.
Существует известная проблема, при которой веб-части "Поиск контента" и "Повторное использование элемента каталога" не используют кэш результатов анонимного поиска на страницах категорий. Эта проблема устранена в накопительном обновлении SharePoint Server 2013 за март 2013 г. Дополнительные сведения см. в статье Microsoft Knowledge Base 2767999: Описание обновления SharePoint Server 2013: 12 марта 2013 г.
Если вы используете категории страниц, созданные до установки пакета накопительного обновления, необходимо заново создать эти страницы. Сохраните макеты и настройки исходных страниц, которые вы хотите сохранить. Отключите и заново подключитесь к каталогу, а затем скопируйте настройки в новые страницы категорий.
Configure cache profile settings
Cache profile settings can be configured in the user interface at the site collection level by a site collection administrator, as well as at the web application level by an administrator on the front-end web server. The page output cache must be enabled at the site collection level before page output cache profiles can be configured at either the site collection level or web application level. If page output cache profiles are enabled at the web application level, the settings specified in Web.config will be used for all page output cache profiles, overriding any values that have been entered through the user interface at the site collection level.
To use the page output cache and the associated cache profile settings, you must be using the Publishing feature on your site.
There is a known issue with the Content Search Web Part. The SendContentBeforeQuery setting in the Web Part does not work correctly on pages that use output caching. This issue is resolved in the SharePoint Server 2013 cumulative update for March 2013. For more information, see Microsoft Knowledge Base article 2767999: Description of the SharePoint Server 2013 update: March 12, 2013.
Use the following procedure to configure the cache profile settings for a web application.
Before you make changes to the web.config file, make a copy of it by using a different name (for example, web.config1), so that if a mistake is made in the file, you can restore the original file.
To configure page output cache profile settings
Verify that you have the following administrative credentials: You must be a member of the Administrators group on the local computer to configure the cache profile settings.
Open Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
In Internet Information Services (IIS) Manager, in the Connections pane, expand the server name that contains the web application, and then expand Sites to view the web application or applications that have been created.
Right-click the name of the web application for which you want to configure the disk-based cache, and then click Explore. Windows Explorer opens, with the directories for the selected web application listed.
Right-click web.config, click Open and choose Notepad if you're asked to find a program to use to open this file.
To enable the cache profile at the web application level, change the useCacheProfileOverrides attribute, from "false" to "true" .
If you set this to true the settings specified in Web.config will be used for all page output cache profiles. This overrides any values that have been entered through the user interface at the site collection level.
To override the varyByRights attribute, change the value from "true" to "false" . This will remove the requirement that users must have identical effective permissions on all securable objects to see the same cached page as any other user.
To override the cacheForEditRights attribute, change the cacheForEditRights attribute, from "false" to "true" . This will bypass the normal behavior in which people with edit permissions have their pages cached.
Save the Notepad file, and then close it.
When you save a change to the web.config file, the web application in Internet Information Services (IIS) 7.0 automatically recycles. This recycling can cause a brief interruption in service to sites contained in that web application, and users can lose session state. For information about recycling web applications in IIS 7.0, see Start or Stop the Web Server (IIS 8).
▍Шлюзы
Шлюз (gateway) — это прокси-сервер, который перенаправляет входящие запросы или исходящие ответы, не модифицируя их. Такие прокси-серверы ещё называют туннелирующими прокси (tunneling proxy), веб-прокси (web proxy), прокси (proxy), или прокси уровня приложения (application level proxy). Эти прокси-серверы обычно совместно используются, например, всеми клиентами, находящимися за одним и тем же файрволом, что делает их хорошо подходящими для кэширования запросов.
Настройка параметров профилей кэша
Параметры профилей кэша может настроить администратор семейства сайтов в пользовательском интерфейсе на уровне семейства сайтов или администратор на уровне веб-приложения на интерфейсном веб-сервере. Следует включить кэш вывода страниц на уровне семейства сайтов, прежде чем можно будет настроить профили кэша вывода страниц на уровне семейства сайтов или уровне веб-приложения. Если профили кэша вывода страниц включены на уровне веб-приложения, указанные в файле Web.config параметры применяются ко всем профилям кэша вывода страниц, переопределяя любые значения, которые были введены через пользовательский интерфейс на уровне семейства сайтов.
Чтобы использовать кэш вывода страниц и соответствующие параметры профилей кэша, на сайте следует использовать компонент публикации.
Существует известная проблема, связанная с веб-частью "Поиск контента". Параметр SendContentBeforeQuery в веб-части не работает должным образом на страницах, на которых используется кэширование выводимых данных. Эту проблему устраняет накопительный пакет обновления для SharePoint Server 2013 за март 2013 г. Дополнительные сведения см. в статье 2767999 базы знаний Майкрософт Описание обновления для SharePoint Server 2013 за 12 марта 2013 г.
Чтобы настроить параметры профилей кэша для веб-приложения, используйте следующую процедуру.
Перед внесением изменений в файл web.config создайте его копию под другим именем (например, web.config1), чтобы в случае ошибки можно было восстановить исходный файл.
Настройка параметров профилей кэша выходных страниц
Проверьте наличие следующих административных учетных данных: для настройки параметров профилей кэша вы должны быть членом группы "Администраторы" на локальном компьютере.
Откройте диспетчер серверов и в меню Сервис выберите Диспетчер служб IIS.
В службы IIS (IIS) Manager в области Подключения разоширим имя сервера, которое содержит веб-приложение, а затем расширим сайты для просмотра созданных веб-приложений или приложений.
Щелкните правой кнопкой имя веб-приложения, для которого требуется настроить дисковый кэш, а затем выберите пункт Просмотреть. Открывается проводник Windows с каталогами для выбранного веб-приложения.
Щелкните правой кнопкой мышиweb.configнажмите кнопку Открыть и выберите Блокнот, если вам будет предложено найти программу для открытия этого файла.
Чтобы включить профиль кэша на уровне веб-приложений, измените атрибут useCacheProfileOverrides с "false" на "true" .
Если установить значение true, указанные в файле Web.config параметры применяются ко всем профилям кэша вывода страниц, переопределяя любые значения, которые были введены через пользовательский интерфейс на уровне семейства сайтов.
Чтобы переопременить varyByRights атрибут, измените значение с "true" на "false" . Это устранит требование о том, что пользователи должны иметь идентичные действительные разрешения на всех защищаемых объектах, чтобы просматривать одну и ту же кэшированную страницу в качестве любого другого пользователя.
Чтобы переопременить cacheForEditRights атрибут, cacheForEditRights измените атрибут с "false" на "true" . При этом будет выполнен обход нормального режима работы, при котором страницы людей с разрешениями на правку кэшируются.
Сохраните файл Блокнота и закройте его.
При сохранения изменения в файле web.config веб-приложение службы IIS (IIS) 7.0 автоматически перерабатывается. Такой перезапуск может привести к кратковременному перебою в обслуживании сайтов в этом веб-приложении, а пользователи могут потерять состояние сеанса. Сведения о рециркуляции веб-приложений в IIS 7.0 см. в странице Start or Stop the Web Server (IIS 8).
Кэширование баз данных
Усложним наш пример, добавим сюда базу данных. Запросы к базам данных могут быть медленными и требовать серьёзных системных ресурсов, так как серверу баз данных, для формирования ответа, нужно выполнять некие вычисления. Если запросы повторяются, кэширование их средствами базы данных поможет уменьшить время её отклика. Кроме того, кэширование полезно в ситуациях, когда несколько компьютеров работают с базой данных, выполняя одинаковые запросы.
Простой веб-сервер с базой данных
Большинство серверов баз данных по умолчанию настроены с учётом оптимальных параметров кэширования. Однако, существует множество настроек, которые могут быть модифицированы для того, чтобы подсистема баз данных лучше соответствовала особенностям конкретного приложения.
Ответы веб-сервера кэшируются в оперативной памяти. Кэш приложения может храниться либо локально, в памяти, либо на специальном кэширующем сервере, который использует базу данных, вроде Redis, которая хранит данные в оперативной памяти.
▍Обратные прокси-серверы
Обратный прокси-сервер (reverse proxy) — это обычно сервер, расположенный там же, где и веб-сервер, с которым он взаимодействует. Обратные прокси-серверы предназначены для предотвращения прямого доступа к серверам, расположенным в частных сетях. Обратные прокси используются для балансировки нагрузки между несколькими внутренними серверами, предоставляют возможности SSL-аутентификации или кэширования запросов. Такие прокси выполняют кэширование на стороне сервера, они помогают основным серверам в обработке большого количества запросов.
Настройка параметров кэша объектов
Администратор семейства сайтов может настроить параметры кэша объектов в пользовательском интерфейсе на уровне семейства сайтов, по умолчанию этот кэш включен. Максимальный размер кэша можно настроить на уровне веб-приложения на интерфейсном веб-сервере, чтобы установить ограничение на максимальный объем памяти, занимаемый кэшем для всех семейств сайтов. Например, отдельные семейства сайтов могут иметь кэш объектов, равный 100 МБ, а для веб-приложения может быть установлено значение 1 ГБ. В этом случае все кэши на сервере вместе не могут использовать более 1 ГБ памяти.
Чтобы использовать кэш объектов, на сайте следует использовать компонент публикации.
Чтобы настроить параметры кэша объектов для веб-приложения на интерфейсном веб-сервере, используйте следующую процедуру.
Перед внесением изменений в файл web.config создайте его копию под другим именем (например, web.config1), чтобы в случае ошибки можно было восстановить исходный файл.
Настройка параметров кэша объектов
Проверьте наличие следующих административных учетных данных: для настройки параметров кэша объектов вы должны быть членом группы "Администраторы" на локальном компьютере.
Откройте диспетчер серверов и в меню Сервис выберите Диспетчер служб IIS.
В службы IIS (IIS) Manager в области Подключения разоширим имя сервера, которое содержит веб-приложение, а затем расширим сайты для просмотра созданных веб-приложений или приложений.
Щелкните правой кнопкой имя веб-приложения, для которого требуется настроить дисковый кэш, а затем выберите пункт Просмотреть. Открывается проводник Windows с каталогами для выбранного веб-приложения.
Щелкните правой кнопкой мыши web.configнажмите кнопку Открыть и выберите Блокнот, если вам будет предложено найти программу для открытия этого файла.
В открытом в Блокноте файле web.config найдите следующую строку:
Чтобы изменить размер кэша, введите новое значение для maxSize . Этот размер задается в мегабайтах (МБ) и по умолчанию равен 100 МБ.
Сохраните файл Блокнота и закройте его.
При сохранения изменения в файле web.config веб-приложение службы IIS (IIS) 7.0 автоматически перерабатывается. Такой перезапуск может привести к кратковременному перебою в обслуживании сайтов в этом веб-приложении, а пользователи могут потерять состояние сеанса. Сведения о рециркуляции веб-приложений в IIS 7.0 см. в странице Start or Stop the Web Server (IIS 8).
Ник Карник, автор материала, перевод которого мы сегодня публикуем, предлагает поговорить о роли кэширования в производительности веб-приложений, рассмотрев средства кэширования разных уровней, начиная с самого низкого. Он обращает особое внимание на то, где именно могут быть кэшированы данные, а не на то, как это происходит.
Мы полагаем, что понимание особенностей систем кэширования, каждая из которых вносит определённый вклад в скорость реакции приложений на внешние воздействия, расширит кругозор веб-разработчика и поможет ему в деле создания быстрых и надёжных систем.
Configure BLOB cache settings
By default, the disk-based BLOB cache is off and must be enabled on the front-end web server if you want to use it. Use the following procedure to configure disk-based cache settings for a web application.
Before you make changes to the web.config file, make a copy of it by using a different name (for example, web.config1), so that if a mistake is made in the file, you can restore the original file.
To configure BLOB cache settings
Verify that you have the following administrative credentials: You must be a member of the Administrators group on the local computer to configure the BLOB cache settings.
Open Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
In Internet Information Services (IIS) Manager, in the Connections pane, expand the server name that contains the web application, and then expand Sites to view the web application or applications that have been created.
Right-click the name of the web application for which you want to configure the disk-based cache, and then click Explore. Windows Explorer opens, with the directories for the selected web application listed.
In the Open With dialog, click Notepad, and then click OK.
The default max size for an image when using Image Renditions is 40 mega pixels. Should you want to modify this value you will need to add the imageRenditionMaxSourcePixels parameter. For example: This will set the max image size for Image Renditions to work at around 100 mega pixels.
In this line, change the location attribute to specify a directory that has enough space to accommodate the cache size.
We strongly recommend that you specify a directory that is not on the same drive as where either the server operating system swap files or server log files are stored.
To add or remove file types from the list of file types to be cached, for the path attribute, modify the regular expression to include or remove the appropriate file extension. If you add file extensions, make sure to separate each file type with a pipe (|), as shown in this line of code.
To change the size of the cache, type a new number for maxSize . The size is expressed in gigabytes (GB), and 10 GB is the default.
It is recommended that you not set the cache size smaller than 10 GB. When you set the cache size, make sure to specify a number large enough to provide a buffer at least 20 percent bigger than the estimated size of the content that will be stored in the cache.
To enable the BLOB cache, change the enabled attribute, from "false" to "true" .
Save the Notepad file, and then close it.
When you save a change to the web.config file, the web application in Internet Information Services (IIS) 7.0 automatically recycles. This recycling can cause a brief interruption in service to sites contained in that web application, and users can lose session state. For information about recycling web applications in IIS 7.0, see IIS Process Recycling.
Configure object cache settings
The object cache settings can be configured at the site collection level in the user interface by a site collection administrator, and is on by default. The maximum cache size can be configured at the web application level on the front-end web server to place a restriction on the maximum amount of memory that the cache will use for all site collections. For example, individual site collections might have the object cache set at 100 MB, while the web application might be set at 1 GB. In this case, no more than 1 GB of memory will be used by all the caches on the server.
To use the object cache, you must be using the Publishing feature on your site.
Use the following procedure to configure the object cache settings for a web application on a front-end web server.
Before you make changes to the web.config file, make a copy of it by using a different name (for example, web.config1), so that if a mistake is made in the file, you can restore the original file.
To configure object cache settings
Verify that you have the following administrative credentials: You must be a member of the Administrators group on the local computer to configure the object cache settings.
Open Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
In Internet Information Services (IIS) Manager, in the Connections pane, expand the server name that contains the web application, and then expand Sites to view the web application or applications that have been created.
Right-click the name of the web application for which you want to configure the disk-based cache, and then click Explore. Windows Explorer opens, with the directories for the selected web application listed.
Right-click web.config, click Open and select Notepad if you're asked to find a program to use to open this file.
In the Web.config Notepad file, find the following line:
To change the size of the cache, type a new number for maxSize . The size is expressed in megabytes (MB), and 100 MB is the default.
Save the Notepad file, and then close it.
When you save a change to the web.config file, the web application in Internet Information Services (IIS) 7.0 automatically recycles. This recycling can cause a brief interruption in service to sites contained in that web application, and users can lose session state. For information about recycling web applications in IIS 7.0, see Start or Stop the Web Server (IIS 8).
ПРИМЕНЯЕТСЯ К: 2013 2016 2019 по подписке SharePoint в Microsoft 365
SharePoint Сервер предоставляет четыре типа кэшей, которые помогают повысить скорость загрузки веб-страниц в браузере: кэш BLOB, кэш вывода страницы, кэш объекта и кэш анонимных результатов поиска. Кэш BLOB включен и настроен в Web.config в веб-приложении, к которому необходимо применить кэш. Кэш вывода страницы и кэш объектов обычно настраиваются в пользовательском интерфейсе на уровне коллекции сайтов. Некоторые параметры этих кэшей также можно настроить на уровне веб-приложений. Изменения, внесенные в файл Web.config, будут применены к всем коллекциям и сайтам веб-приложения, а также вытесят любую конфигурацию, выполненную на уровне коллекции веб-сайтов или ниже.
Чтобы использовать кэш вывода страниц или кэш объектов, необходимо включить компонент публикации на сайте.
▍Прямые прокси-серверы
Прямой прокси-сервер (forward proxy, часто такие серверы называют просто proxy server) обычно устанавливается на стороне клиента. Веб-браузер, который настроен на использование прямого прокси-сервера, будет отправлять исходящие запросы этому серверу. Затем эти запросы будут перенаправлены на целевой сервер, расположенный в интернете. Одно из преимуществ прямых прокси заключаются в том, что они защищают данные клиента (однако, если говорить об обеспечении анонимности в интернете, безопаснее будет пользоваться VPN).
Процессорный кэш
Начнём наш разговор о кэшах с самого низкого уровня — с процессора. Кэш-память процессора — это очень быстрая память, которая играет роль буфера между процессором (CPU) и оперативной памятью (RAM). Кэш-память хранит данные и инструкции, к которым обращаются чаще всего, благодаря чему процессор может получать ко всему этому доступ практически мгновенно.
В процессорах имеется особая память, представленная регистрами процессора, которая обычно представляет собой небольшое хранилище информации, обеспечивающее крайне высокую скорость обмена данными. Регистры — это самая быстрая память, с которой может работать процессор, которая расположена максимально близко к остальным его механизмам и имеет небольшой объём. Иногда регистры называют кэшем нулевого уровня (L0 Cache, L — это сокращение от Layer).
У процессоров, кроме того, имеется доступ к ещё нескольким уровням кэш-памяти. Это — до четырёх уровней кэша, которые, соответственно, называются кэшами первого, второго, третьего, и четвёртого уровня (L0 — L4 Cache). То, к какому именно уровню относятся регистры процессора, в частности, будет ли это кэш нулевого или первого уровня, определяется архитектурой процессора и материнской платы. Кроме того, от архитектуры системы зависит то, где именно — на процессоре, или на материнской плате, физически расположена кэш-память разных уровней.
Структура памяти в некоторых новейших CPU
Итоги
В этом материале мы рассмотрели различные уровни кэширования данных, применяющиеся в процессе обмена информацией между клиентом и сервером. Веб-приложения не могут мгновенно реагировать на воздействия пользователя, что, в частности, связано, для действий, требующих обмена данными с серверами этих приложений, с необходимостью выполнения неких вычислений перед отправкой ответа. Во время, необходимое для передачи данных от сервера клиенту, входит и время, необходимое для поиска необходимых данных на диске, и сетевые задержки, и обработка очередей запросов, и механизмы регулирования полосы пропускания сетей, и многое другое. Если учесть, что всё это может происходить на множестве компьютеров, находящихся между клиентом и сервером, то можно говорить о том, что все эти задержки способны серьёзно увеличить время, необходимое для прихода запроса на сервер и получения клиентом ответа.
Правильно настроенная система кэширования способна значительно улучшить общую производительность сервера. Кэши сокращают задержки, неизбежно возникающие при передаче данных по сети, помогают экономить сетевой трафик, и, в результате, уменьшают время, необходимое для того, чтобы браузер вывел запрошенную у сервера веб-страницу.
Мемоизация функций
Сейчас поговорим об оптимизации производительности серверного приложения за счёт мемоизации. Это — разновидность кэширования, применяемая для оптимизации работы с ресурсоёмкими функциями. Данная техника позволяет выполнять полный цикл вычислений для определённого набора входных данных лишь один раз, а при следующих обращениях к функции с теми же входными данными сразу выдавать найденный ранее результат. Мемоизация реализуется посредством так называемых «таблиц поиска» (lookup table), хранящих ключи и значения. Ключи соответствуют входным данным функции, значения — результатам, которые возвращает функция при передаче ей этих входных данных.
Мемоизация функции с помощью таблицы поиска
Мемоизация — это обычный приём, используемый для повышения производительности программ. Однако он может быть не особенно полезным при работе с ресурсоёмкими функциями, которые вызываются редко, или с функциями, которые, и без мемоизации, работают достаточно быстро.
Настройка параметров кэша BLOB
По умолчанию дисковый кэш BLOB отключен, и для использования этого кэша его необходимо включить на интерфейсном веб-сервере. Чтобы настроить параметры дискового кэша для веб-приложения, используйте следующую процедуру.
Перед внесением изменений в файл web.config создайте его копию под другим именем (например, web.config1), чтобы в случае ошибки можно было восстановить исходный файл.
Настройка параметров кэша BLOB
Проверьте наличие следующих административных учетных данных: для настройки параметров кэша BLOB вы должны быть членом группы "Администраторы" на локальном компьютере.
Откройте диспетчер серверов и в меню Сервис выберите Диспетчер служб IIS.
В службы IIS (IIS) Manager в области Подключения разоширим имя сервера, которое содержит веб-приложение, а затем расширим сайты для просмотра созданных веб-приложений или приложений.
Щелкните правой кнопкой имя веб-приложения, для которого требуется настроить дисковый кэш, а затем выберите пункт Просмотреть. Открывается проводник Windows с каталогами для выбранного веб-приложения.
В диалоговом окте Open With щелкните Блокнот кнопку ОК.
По умолчанию максимальный размер изображения при использовании представлений изображений составляет 40 мегапикселей. При необходимости это значение можно изменить, добавив параметр imageRenditionMaxSourcePixels. Пример: Это задает максимальный размер изображения для renditions изображений, чтобы работать на уровне около 100 мега пикселей.
В этой строке замените значение атрибута location на каталог, в котором достаточно места для размещения кэша.
Мы настоятельно рекомендуем указать каталог, который находится не на том диске, где хранятся файлы подкачки серверной операционной системы или файлы журналов сервера.
Чтобы добавить типы файлов в список кэширования или удалить их оттуда, измените регулярное выражение для атрибута path , включив или исключив в нем соответствующее расширение файлов. При добавлении расширений файлов обязательно отделяйте каждый тип файлов вертикальной чертой (|), как показано в этой строке кода.
Чтобы изменить размер кэша, введите новое значение для maxSize . Этот размер задается в гигабайтах (ГБ) и по умолчанию равен 10 ГБ.
Не рекомендуется задавать размер кэша менее 10 ГБ. При установке размера кэша обязательно укажите достаточно большое число для того, чтобы предусмотреть резерв не менее 20 процентов от предполагаемого размера контента, который будет храниться в этом кэше.
Чтобы включить кэш BLOB, измените enabled атрибут с "false" на "true" .
Сохраните файл Блокнота и закройте его.
При сохранении изменения в файле web.config веб-приложение в Службы IIS 7.0 автоматически выполняет перезапуск. Такой перезапуск может привести к кратковременному перебою в обслуживании сайтов в этом веб-приложении, а пользователи могут потерять состояние сеанса. Сведения о перезапуске веб-приложений в IIS 7.0 см. в статье Перезапуск процесса IIS.
Кэширование в браузере
Перед нами весьма полезная технология, которая даёт следующие преимущества всем участникам обмена данными:
- Улучшаются впечатления пользователя от работы с сайтом, так как ресурсы из локального кэша загружаются очень быстро. Во время получения ответа не входит время прохождения сигнала от клиента к серверу и обратно (RTT, Round Trip Time), так как запрос не уходит в сеть.
- Уменьшается нагрузка на серверное приложение и на другие серверные компоненты, ответственные за обработку запросов.
- Высвобождается некоторая часть сетевых ресурсов, которыми теперь могут воспользоваться другие пользователи интернета, экономятся средства на оплату трафика.
Кэширование в браузере
Кэш жёсткого диска
Жёсткие диски (HDD, Hard Disk Drive), применяемые для постоянного хранения данных — это, в сравнении с оперативной памятью, предназначенной для кратковременного хранения информации, устройства довольно медленные. Однако надо отметить, что скорость постоянных хранилищ информации увеличивается благодаря распространению твердотельных накопителей (SSD, Solid State Drive).
В системах долговременного хранения информации кэш диска (его ещё называют буфером диска или кэширующим буфером) — это встроенная в жёсткий диск память, которая играет роль буфера между процессором и физическим жёстким диском.
Кэш жёсткого диска
Дисковые кэши работают, исходя из предположения, что когда на диск что-то пишут, или с него что-то читают, есть вероятность того, что в ближайшем будущем к этим данным будут обращаться снова.
Кэш объектов
Кэш объектов сокращает трафик между веб-сервером и базой данных SQL, сохраняя объекты (такие как списки и библиотеки, параметры веб-сайта и макеты страниц) в памяти интерфейсного веб-сервера. В результате страницы, которым требуются эти элементы, могут отображаться быстро, увеличивая скорость доставки страниц в браузер клиента. Параметры кэша объектов можно настроить на уровне веб-приложения и уровне семейства сайтов. По умолчанию кэш объектов включен на уровне семейства сайтов.
Вы можете оптимизировать кэш объектов для веб-приложения, указав его размер. Если указать большой размер кэша, это может улучшить производительность для некоторых крупных сайтов за счет большего потребления памяти на каждом интерфейсном веб-сервере. Другие параметры кэша объектов можно настроить на уровне семейства сайтов.
Чтобы использовать кэш объектов, необходимо включить компонент публикации на сайте.
Читайте также: