Управление сроком действия веб-содержимого в сети доставки содержимого Azure
Файлы с общедоступных веб-серверов источников можно кэшировать в Azure сеть доставки содержимого до тех пор, пока не истекает время жизни (TTL). TTL определяется заголовком Cache-Control
в ответе HTTP от исходного сервера. В этой статье описано, как определить заголовки Cache-Control
для функции веб-приложений службы приложений Microsoft Azure, облачных служб Azure, приложений ASP.NET и сайтов IIS. Все они настраиваются сходным образом. Определить заголовок Cache-Control
можно с помощью файлов конфигурации или программным способом.
Вы также можете управлять параметрами кэша из портал Azure, задав правила кэширования сети доставки содержимого. Если создать одно или несколько правил кэширования и настроить их на переопределение или отключение кэша, предоставляемые системой параметры, описываемые в этой статье, будут игнорироваться. См. дополнительные сведения о функции кэширования.
Совет
Срок жизни для файла можно не указывать. В этом случае Azure сеть доставки содержимого автоматически применяет срок жизни по умолчанию в семь дней, если только вы не настроили правила кэширования в портал Azure. Этот срок жизни по умолчанию применяется только к оптимизациям общей веб-доставки. Для оптимизаций больших файлов срок жизни по умолчанию составляет один день, а для оптимизаций потоковой передачи срок жизни по умолчанию составляет один год.
Дополнительные сведения о том, как работает Azure сеть доставки содержимого для ускорения доступа к файлам и другим ресурсам, см. в статье "Обзор сеть доставки содержимого Azure".
Настройка заголовков кэша управления с помощью правил кэширования сети доставки содержимого
Предпочтительный способ установки заголовка Cache-Control
веб-сервера — использовать правила кэширования на портале Azure. Дополнительные сведения о правилах кэширования сети доставки содержимого см. в разделе "Управление поведением кэширования Azure сеть доставки содержимого с помощью правил кэширования".
Примечание.
Правила кэширования доступны только для azure CDN уровня "Стандартный" из профилей Edgio . Для Azure CDN Premium из профилей Edgio необходимо использовать подсистему правил azure сеть доставки содержимого на портале "Управление" для аналогичных функций.
Чтобы перейти на страницу правил CDN для кэширования:
В портал Azure выберите профиль сети доставки содержимого, а затем выберите конечную точку для веб-сервера.
В области слева в разделе "Параметры" выберите Правила кэширования.
Появится страница Правила кэширования.
Чтобы установить заголовки Cache-Control веб-сервера, используя глобальные правила кэширования, сделайте следующее:
В разделе Глобальные правила кэширования задайте для параметра Режим кэширования строк запросов значение Пропускать строки запросов, а для параметра Поведение кэширования — значение Переопределить.
Для параметра Срок действия кэша введите 3600 в поле Секунды или 1 в поле Часы.
Это глобальное правило кэширования задает значение длительности кэширования в один час и влияет на все запросы к конечной точке. Он переопределяет любые
Cache-Control
илиExpires
HTTP-заголовки, отправляемые сервером-источником, указанным конечной точкой.Выберите Сохранить.
Чтобы установить файлы заголовков Cache-Control веб-сервера, используя настраиваемые правила кэширования, сделайте следующее:
В разделе Настраиваемые правила кэширования создайте два условия соответствия.
В первом условии соответствия задайте для параметра Условие соответствия значение Путь и введите значение
/webfolder1/*
для параметра Значения соответствия. Задайте для параметра Поведение кэширования значение Переопределить и введите 4 в поле Дни.Во втором условии соответствия задайте параметру Условие соответствия значение Путь и введите значение
/webfolder1/file1.txt
для параметра Значения соответствия. Задайте для параметра Поведение кэширования значение Переопределить и введите 2 в поле Дни.
Первое настраиваемое правило кэширования задает длительность кэширования, составляющую четыре дня, для всех файлов в папке
/webfolder1
на сервере-источнике, указанном конечной точкой. Второе правило переопределяет первое правило только для файлаfile1.txt
и задает для него длительность кэширования в два дня.Выберите Сохранить.
Определение заголовков Cache-Control с помощью файлов конфигурации
Вы можете управлять частотой обновления статического содержимого, такого как изображения и таблицы стилей, изменяя файлы конфигурации applicationHost.config или web.config своего веб-приложения. Чтобы задать заголовок Cache-Control
для содержимого, используйте элемент <system.webServer>/<staticContent>/<clientCache>
в обоих файлах.
Использование файла конфигурации applicationHost.config
Файл applicationHost.config — это корневой файл системы конфигурации IIS. Хотя параметры конфигурации в файле applicationHost.config влияют на все приложения на сайте, они переопределяются параметрами в любом из используемых для приложений файлов web.config.
Использование файлов web.config
С помощью файла web.config можно настроить поведение всего веб-приложения или определенного каталога в веб-приложении. Как правило, в корневой папке веб-приложения есть хотя бы один файл web.config. Для каждого файла конфигурации Web.config в определенной папке параметры конфигурации влияют на все параметры в этой папке и ее вложенных папках, если только они не переопределяются на уровне вложенных папок другим файлом web.config .
Например, в файле web.config в корневой папке веб-приложения можно определить элемент <clientCache>
, чтобы кэшировать все статическое содержимое веб-приложения раз в три дня. Можно также включить файл web.config во вложенную папку с более динамическим содержимым (например, \frequent
) и настроить его элемент <clientCache>
для кэширования содержимого вложенной папки раз в шесть часов. В результате содержимое всего веб-сайта кэшируется каждые три дня, а содержимое каталога \frequent
— каждые шесть часов.
В следующем примере файла конфигурации XML показано, как настроить элемент <clientCache>
для определения максимального срока в три дня:
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="3.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
Чтобы использовать атрибут cacheControlMaxAge, присвойте атрибуту cacheControlMode значение UseMaxAge
. Этот параметр добавляет HTTP-заголовок и директиву (Cache-Control: max-age=<nnn>
) в ответ. У значения интервала времени для атрибута cacheControlMaxAge следующий формат: <days>.<hours>:<min>:<sec>
. Это значение преобразуется в секунды и используется в качестве значения директивы Cache-Control
max-age
. Дополнительные сведения об элементе <clientCache>
см. в описании клиентского кэша <clientCache>.
Определение заголовков Cache-Control программным способом
Для приложений ASP.NET вы управляете поведением кэширования сети доставки содержимого программным способом, задав свойство HttpResponse.Cache API .NET. Дополнительные сведения о свойстве HttpResponse.Cache, см. в описании свойства HttpResponse.Cache и класса HttpCachePolicy.
Чтобы программным способом кэшировать содержимое приложения в ASP.NET, выполните следующие действия.
- Убедитесь, что содержимое отмечено как кэшируемое, установив для параметра
HttpCacheability
значениеPublic
. - Задайте проверяющий элемент кэша, вызвав один из следующих
HttpCachePolicy
методов:- Вызовите
SetLastModified
, чтобы определить значение метки времени для заголовкаLast-Modified
. - Вызовите
SetETag
, чтобы определить значение для заголовкаETag
.
- Вызовите
- При необходимости укажите срок действия кэша, вызвав
SetExpires
, чтобы определить значения для заголовкаExpires
. В противном случае применяется эвристический метод кэширования по умолчанию, описанный выше в этом документе.
Например, чтобы кэшировать содержимое в течение одного часа, добавьте следующий код C#:
// Set the caching parameters.
Response.Cache.SetExpires(DateTime.Now.AddHours(1));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetLastModified(DateTime.Now);
Проверка заголовка Cache-Control
Вы легко можете проверить установленный для веб-содержимого срок жизни. С помощью средств разработчика браузера проверьте, содержит Cache-Control
ли веб-содержимое заголовок ответа. Для просмотра заголовков ответа можно использовать и другие средства, например wget, Postman или Fiddler.