Управление сроком действия веб-содержимого в сети доставки содержимого 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 для кэширования:

  1. В портал Azure выберите профиль сети доставки содержимого, а затем выберите конечную точку для веб-сервера.

  2. В области слева в разделе "Параметры" выберите Правила кэширования.

    Снимок экрана: кнопка

    Появится страница Правила кэширования.

    Снимок экрана: страница кэширования сети доставки содержимого.

Чтобы установить заголовки Cache-Control веб-сервера, используя глобальные правила кэширования, сделайте следующее:

  1. В разделе Глобальные правила кэширования задайте для параметра Режим кэширования строк запросов значение Пропускать строки запросов, а для параметра Поведение кэширования — значение Переопределить.

  2. Для параметра Срок действия кэша введите 3600 в поле Секунды или 1 в поле Часы.

    Снимок экрана: пример правил глобального кэширования сети доставки содержимого.

    Это глобальное правило кэширования задает значение длительности кэширования в один час и влияет на все запросы к конечной точке. Он переопределяет любые Cache-Control или Expires HTTP-заголовки, отправляемые сервером-источником, указанным конечной точкой.

  3. Выберите Сохранить.

Чтобы установить файлы заголовков Cache-Control веб-сервера, используя настраиваемые правила кэширования, сделайте следующее:

  1. В разделе Настраиваемые правила кэширования создайте два условия соответствия.

    1. В первом условии соответствия задайте для параметра Условие соответствия значение Путь и введите значение /webfolder1/* для параметра Значения соответствия. Задайте для параметра Поведение кэширования значение Переопределить и введите 4 в поле Дни.

    2. Во втором условии соответствия задайте параметру Условие соответствия значение Путь и введите значение /webfolder1/file1.txt для параметра Значения соответствия. Задайте для параметра Поведение кэширования значение Переопределить и введите 2 в поле Дни.

    Снимок экрана: пример правил кэширования настраиваемой сети доставки содержимого.

    Первое настраиваемое правило кэширования задает длительность кэширования, составляющую четыре дня, для всех файлов в папке /webfolder1 на сервере-источнике, указанном конечной точкой. Второе правило переопределяет первое правило только для файла file1.txt и задает для него длительность кэширования в два дня.

  2. Выберите Сохранить.

Определение заголовков 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-Controlmax-age. Дополнительные сведения об элементе <clientCache> см. в описании клиентского кэша <clientCache>.

Определение заголовков Cache-Control программным способом

Для приложений ASP.NET вы управляете поведением кэширования сети доставки содержимого программным способом, задав свойство HttpResponse.Cache API .NET. Дополнительные сведения о свойстве HttpResponse.Cache, см. в описании свойства HttpResponse.Cache и класса HttpCachePolicy.

Чтобы программным способом кэшировать содержимое приложения в ASP.NET, выполните следующие действия.

  1. Убедитесь, что содержимое отмечено как кэшируемое, установив для параметра HttpCacheability значение Public.
  2. Задайте проверяющий элемент кэша, вызвав один из следующих HttpCachePolicy методов:
    • Вызовите SetLastModified, чтобы определить значение метки времени для заголовка Last-Modified.
    • Вызовите SetETag, чтобы определить значение для заголовка ETag.
  3. При необходимости укажите срок действия кэша, вызвав 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.

Next Steps