База знаний
Подключиться Консультация
Получить консультацию Подключиться
Облачные сервисы
Виртуальный рабочий стол
Передовые сервисы по предоставлению сотрудникам безопасного удалённого доступа к мощным виртуальным десктопам и корпоративным ресурсам клиента с любого устройства, из любой точки мира.
Корпоративные сервисы
Удобные сервисы для обмена документами или файлами между сотрудниками компании в том числе за пределами организации, а также настройка ИТ‑инфраструктуры «под ключ» для Вашего бизнеса от экспертов облака МТС. Благодаря этим сервисам сотрудники экономят рабочее время на выполнение ежедневным рутинных задач, тем самым повышается их эффективность.
Сетевые сервисы
Мы обеспечиваем комплекс решений по построению и оптимизации сетевой инфраструктуры. Это позволит вам быстро и эффективно реализовать необходимую связность между различными сервисами с определенными параметрами качества.
Хранение и резервирование данных
Надежно и стабильно с МТС Cloud. Мы обеспечиваем хранение любых видов и объемов данных. Это позволит вам быстро и эффективно работать с данными и приложениями.
Аренда оборудования
Сервисы собственной разработки, которые помогут повысить эффективность работы ИТ‑подразделений.
Проектные решения
Партнерские сервисы
Стать партнером
Поддержка
База Знаний #CloudMTS

Раздел Кеширование

Игнорирование Set-Cookie при кешировании на CDN-сервере

CDN кеширует один и тот же файл с разными куками из HTTP-заголовка запроса Set-Cookie как разные файлы. В результате каждый новый запрос клиента не отдается из кеша, а проксируется на источник. Это снижает процент кешированного трафика.

Включите опцию «Игнорировать Set-Cookie» для того, чтобы кешировать файлы с куками как один объект.

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Кеширование
  • включите опцию «Игнорировать Set-Cookie»
imgУвеличить
Доставка устаревшего контента из кеша при недоступности сервера-источника

Опция позволяет отдавать последний кешированный контент при недоступности сервера-источника при следующих ошибках:

  • error (сетевые проблемы)
  • timeout
  • invalid_header
  • updating (обновление кеша)
  • http_500
  • http_502
  • http_503
  • http_504
  • http_403
  • http_404
  • http_429.

Устаревший контент будет отдаваться с заголовком X-Cache: Stale. Доступность источника будет проверяться с каждым запросом пользователя. Если работоспособность источника восстановилась, CDN закеширует свежую версию файла. В случае, когда работоспобность источника не восстановилась, CDN-серверы будут отдавать Stale-контент, пока не истечет время жизни кеша.

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

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Кеширование
  • включите опцию "Всегда онлайн"

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

imgУвеличить
Кеширование в браузере. Настройка параметров кеширования для браузеров пользователей

Возможно настроить время кеширования файлов в браузерах конечных пользователей.

imgУвеличить

Использовать настройки источника

По умолчанию время кеширования в браузере задается настройками источника. Если на источнике таких настроек нет, то в браузере контент кешироваться не будет.

imgУвеличить

Задать настройки на CDN

Настройки кеширования в браузере задает CDN. 

В кеше браузера будут храниться только следующие коды ответа: 200, 201, 204, 206, 301, 302, 303, 304, 307, 308. Ответы не будут кешироваться с остальными кодами в браузере пользователя. По умолчанию время жизни кеша в браузере 4 дня.

imgУвеличить
Кеширование на CDN. Настройка и проверка параметров кеширования на CDN-серверах

Возможно задать время хранения контента в кеше CDN-серверов.

Когда время хранения кеша истекает, CDN-серверы обращаются к файлу, находящемуся на источнике, чтобы сравнить HTTP-заголовок Etag:

  • если значения заголовка не совпадают:

    • CDN кешируют новый файл на время, заданное для хранения контента в кеше CDN
  • если значения заголовка совпадают:

    • CDN продолжит отдавать пользователям имеющийся в кеше файл еще один период времени, заданный для хранения контента в кеше CDN

Задать параметры кеширования 

Опция «Кеширование на CDN» задаёт время хранения контента в кеше CDN-серверов. У неё есть два варианта работы: 

  • задать настройки на CDN 
  • использовать настройки источника
Задать настройки на CDN 
imgУвеличить

CDN-серверы запрашивают контент с источника и кешируют его на время, заданное в опции «Задать настройки на CDN».

Настройка имеет два параметра:

  • время жизни кеша

    • чтобы задать время хранения кеша для запросов с кодами ответа 200, 206, 301, 302. 4xx и 5xx коды ответа кешироваться не будут
  • расширенные правила кеширования 

    • чтобы задать время хранения кеша для запросов с другими кодами ответа или, чтобы переопределить некоторые из кодов параметра «Время жизни кеша»
    • значения параметра имеют больший приоритет, чем значения параметра «Время жизни кеша»

Пример 

  • в настройках опции выбрали Задать настройки на CDN и указали время жизни кеша 4 дня
  • в расширенных правилах добавили 3 правила: 

    • код ответа 200 – 10 минут 
    • код ответа 404 - 1 минуту 
imgУвеличить
  • в результате настроек запросы будут кешироваться так: 

    • запросы с кодом ответа 200 – 10 минут 
    • запросы с кодом ответа 404 - 1 минуту 
    • запросы с кодом ответа 206, 301, 302 - 4 дня 
    • 4хх (кроме 404), 5хх - кешироваться не будут  

Если контент не запрашивается конечными пользователями, он удаляется из кеша CDN-серверов через 36 часов, независимо от настроек опции.


Использовать настройки источника 

При запросе контента с сервера-источника CDN-серверы ориентируются на заголовок Cache-Control, настроенный на источнике, и кешируют контент на время, заданное в качестве его значения.

imgУвеличить

Если на сервере-источнике отсутствует заголовок Cache-Control, то CDN использует время хранения, заданное в опции «Время жизни кеша по умолчанию».

Данная настройка применяется только для кодов ответов 200, 201, 204, 206, 301, 302, 303, 304, 307, 308, остальные коды не кешируются.

Если контент не запрашивается конечными пользователями, он удаляется из кеша CDN-серверов через 36 часов, независимо от настроек опции.


Настройка кеширования на источнике

По умолчанию наследуются все заголовки, заданные на источнике. Время хранения кеша на CDN-серверах определяется HTTP-заголовком Cache-Control.

Добавьте заголовок Cache-Control на сервер в файл .htacess или nginx.conf. Заголовок должен содержать директивы public, max-age.

Пример конфигурации Apache 

<ifModule mod_headers.c> 
 <FilesMatch "\.(gif|ico)$"> 
     Header set Cache-Control "max-age=31536000, public" 
 </FilesMatch> 
 
 <FilesMatch "\.(js)$"> 
     Header set Cache-Control "max-age=31536000,  
             public" 
 </FilesMatch> 
 </ifModule> 

 
Пример конфигурации Nginx

server { 
   #... 
   location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { 
     add_header Cache-Control "max-age=88000,  public"; 
   } 
   #... 

Проверка настроек кеширования

Проверьте, какие заголовки кеширования присутствуют при запросе файла, интегрированного с CDN.

Для расшифровки используйте описание заголовков ниже.

Проверка с помощью команды cURL в  терминале (terminal для MacOS; cmd для WindowsOS) 
  • в терминале пропишите: curl -I http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css, где http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css - ссылка на файл, интегрированный с CDN.
  • будет получен следующий вывод; обратите внимание на заголовки Cache-Control, Cache, X-Cached-Since, X-ID:
HTTP/1.1 200 OK 
Server: nginx/1.13.1 
Date: Fri, 09 Jun 2017 12:54:24 GMT 
Content-Type: image/jpeg 
Content-Length: 124024 
Connection: keep-alive 
X-Image-Generated: 29 
X-Image-Meta: 1024x768 
X-Image-Read: 71 
Expires: Wed, 06 Dec 2017 12:51:43 GMT
Access-Control-Allow-Origin: * 
Last-Modified: Sun, 01 Jan 2017 12:00:00 GMT 
Cache-Control: max-age=315360000, public — время, на которое файл будет закеширован на сервере в секундах. 
Cache: HIT - файл отдался из кеша CDN. 
X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше сервера CDN. 
X-ID: m9-up-e245 — сервер CDN, с которого был отдан файл. 
  • если возникает подозрение, что контент не кешируется, проверьте настройки на источнике или обратитесь в техническую поддержку
Проверка с помощью инструментов разработчика в браузере 
  • откройте любой интернет-браузер (например, Google Chrome)
  • откройте сайт
  • нажмите на кнопку [F12] клавиатуры - откроется панель разработчика
  • выберите вкладку Сеть (Network)
  • обновите страницу - нажмите на кнопку [F5] клавиатуры
  • будет получен список всех файлов, которые были загружены с сайта
  • найдите статический файл (например: jpeg, png, img), интегрированный с CDN и нажмите на него
  • на вкладке Headers справа расположены заголовки, настроенные на сервере
imgУвеличить
  • проанализируйте их, используя описание важных заголовков ниже

Важные заголовки 

  • проверить, откуда (с вашего сервера или с CDN-сервера) был отправлен контент, возможно по значению HTTP-заголовка  X-Cache:

    • X-Cache: HIT — файл отдался из кеша CDN
    • X-Cache: MISS — файл был запрошен с источника
  • проверить, с какого сервера CDN был отправлен контент, можно по значению заголовка:

    • X-ID: [m9-up-e245] - файл отдан с сервера m9-up-e245  
  • время, когда контент был закеширован на CDN-сервере, возможно узнать по значению заголовка X-Cached-Since:

    • X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше узла CDN 
Поддержка заголовков

Для проверки кеширования важно понимать, какие значения заголовков кеширования поддерживаются CDN-серверами, а какие - нет.

Совместимые с CDN параметры HTTP-заголовка Cache-Control:

  • Cache-Control: Max-Age — задает время жизни файла в кеше в секундах
  • Cache-Control: Public — указывает на то, что кешировать файл сможет не только конечный клиент пользователя (браузер), но и прокси-серверы, CDN-серверы и т.д. 

Несовместимые с CDN параметры HTTP-заголовка Cache-Control:

  • Cache-Control: Private — директива, противоположная «public»  — указывает на то, что файл не должен кешироваться промежуточными прокси
  • Cache-Control: No-cache — позволяет указать, что клиент должен делать запрос на сервер каждый раз при обращении к файлу
Игнорирование параметров запросов при кешировании на CDN-сервере

Данная опция определяет, как кэшировать файлы с разными параметрами запроса. Параметр запроса — это уникальная строка запроса (параметр после знака вопроса) в URL.

Пример

http://cdn.example.com/photo.jpeg?id=6&amp;color=blue
http://cdn.example.com/photo.jpeg?id=1&amp;color=blue

По умолчанию опция выключена. Чтобы ее включить:

  • перейдите в раздел CDN-ресурсы
  • перейдите в настройки необходимого ресурса
  • перейдите в раздел Кеширование
  • выберите Параметры запроса
imgУвеличить

У включенной опции доступно 3 переключателя:

  • Игнорировать все

Выбрана по умолчанию. Файлы с разными параметрами запроса кешируются как объекты с одинаковым ключом независимо от значения параметров.

Пример

Следующие файлы будут закешированы как объекты с одним ключом кеширования, так как все параметры будут проигнорированы:

http://cdn.example.com/photo.jpeg?id=6&amp;color=blue
http://cdn.example.com/photo.jpeg?id=1&amp;color=blue

  • Игнорировать все, кроме

Файлы с указанными параметрами запроса кешируются как объекты с разными ключами, файлы с другими параметрами — как объекты с одинаковым ключом. Каждый параметр вводится в отдельную строку поля.

Пример

Указан параметр id. Следующие файлы будут закешированы как объекты с разными ключами, так как значения параметра id отличаются, значение параметра color будут проигнорированы.

http://cdn.example.com/photo.jpeg?id=6&amp;color=blue
http://cdn.example.com/photo.jpeg?id=1&amp;color=blue

Указан параметр color. Следующие файлы будут закешированы как объекты с одинаковыми ключами, так как значения параметра color совпадают, а параметр id будет проигнорирован.

http://cdn.example.com/photo.jpeg?id=6&amp;color=blue
http://cdn.example.com/photo.jpeg?id=1&amp;color=blue

  • Игнорировать только

Файлы с указанными параметрами запроса кешируются как объекты с одинаковым ключом, файлы с другими параметрами — как объекты с разными ключами. Каждый параметр вводится в отдельную строку поля.

Пример

Указан параметр id. Файлы будут закешированы как объекты с одинаковыми ключами, так как значения параметра id будут проигнорированы, а значения параметров color совпадают.

http://cdn.example.com/photo.jpeg?id=6&amp;color=blue
http://cdn.example.com/photo.jpeg?id=1&amp;color=blue

Указан параметр color. Файлы будут закешированы как объекты с разными ключами, так как значения параметра color будут проигнорированы, а значения параметров id отличаются.

http://cdn.example.com/photo.jpeg?id=6&amp;color=blue
http://cdn.example.com/photo.jpeg?id=1&amp;color=blue

Проверка кеширования

По умолчанию наследуются все заголовки, заданные на источнике.

Проверка настроек

Проверьте, какие заголовки кеширования присутствуют при запросе файла, интегрированного с CDN. Для расшифровки используйте описание заголовков ниже.

Проверка с помощью команды cURL в  терминале (terminal для MacOS; cmd для WindowsOS) 

HTTP/1.1 200 OK 
Server: nginx/1.13.1 
Date: Fri, 09 Jun 2017 12:54:24 GMT 
Content-Type: image/jpeg 
Content-Length: 124024 
Connection: keep-alive 
X-Image-Generated: 29 
X-Image-Meta: 1024x768 
X-Image-Read: 71 
Expires: Wed, 06 Dec 2017 12:51:43 GMT 
Cache-Control: max-age=15552000 
Access-Control-Allow-Origin: * 
Last-Modified: Sun, 01 Jan 2017 12:00:00 GMT 
Cache-Control: max-age=315360000, public — время, на которое файл будет закеширован на сервере в секундах. 
Cache: HIT - файл отдался из кеша CDN. 
X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше сервера CDN. 
X-ID: m9-up-e245 — сервер CDN, с которого был отдан файл. 


  • если возникают подозрения, что контент не кешируется, проверьте настройки на источнике или обратитесь в техническую поддержку
Проверка с помощью инструментов разработчика в браузере 

  • откройте любой интернет-браузер (например, Google Chrome)
  • откройте сайт
  • нажмите на кнопку [F12] клавиатуры - откроется панель разработчика
  • выберите вкладку Сеть (Network)
  • обновите страницу - нажмите на кнопку [F5] клавиатуры
  • будет получен список всех файлов, которые были загружены с сайта
  • найдите статический файл (например: jpeg, png, img), интегрированный с CDN и нажмите на него
  • на вкладке Headers справа расположены заголовки, настроенные на сервере
  • проанализируйте их, используя описание важных заголовков ниже

Важные заголовки 


  • проверить, откуда (с вашего сервера или с CDN-сервера) был отправлен контент, можно по значению HTTP-заголовка  X-Cache:

    • X-Cache: HIT — файл отдался из кеша CDN
    • X-Cache: MISS — файл был запрошен с источника
  • проверить, с какого сервера CDN был отправлен контент, можно по значению заголовка:

    • X-ID: [m9-up-e245] - файл отдан с сервера m9-up-e245  
  • время, когда контент был закеширован на CDN-сервере, можно узнать по значению заголовка X-Cached-Since:

    • X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше узла CDN 
Поддержка заголовков

Для проверки кеширования важно понимать, какие значения заголовков кеширования поддерживаются CDN-серверами, а какие - нет.

Совместимые с CDN параметры HTTP-заголовка Cache-Control:

  • Cache-Control: Max-Age — задает время жизни файла в кеше в секундах. 
  • Cache-Control: Public — указывает на то, что кешировать файл сможет не только конечный клиент пользователя (браузер), но и прокси-серверы, CDN-серверы и т.д. 

Несовместимые с CDN параметры HTTP-заголовка Cache-Control:

  • Cache-Control: Private — директива, противоположная «public»  — указывает на то, что файл не должен кешироваться промежуточными прокси. 
  • Cache-Control: No-cache — позволяет указать, что клиент должен делать запрос на сервер каждый раз при обращении к файлу.  

Описания и инструкции, размещаемые на данном ресурсе, носят исключительно информационный характер и не могут рассматриваться в качестве гарантий, заверений, рекомендаций или документа, порождающего какие-либо обязательства МТС. Конкретные условия использования сервисов определяются договорами с клиентом. МТС не несет ответственности за содержание публикуемых инструкций и результаты их применения клиентом. Актуальность отдельных положений публикуемых описаний и инструкций необходимо уточнять у аккаунт-менеджера или службы технической поддержки hub-support@cloud.mts.ru