Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для конечных точек REST можно повлиять на то, как построитель данных (DAB) использует внутренний кэш результатов запросов с заголовком Cache-Control запроса.
Это важно
Если кэширование отключено в конфигурации среды выполнения, эти директивы игнорируются и запросы выполняются нормально.
Поддерживаемые значения Cache-Control
| Ценность | Поведение |
|---|---|
no-cache |
Позволяет DAB обойти кэши L1 и L2, получить свежие данные из базы данных и обновить кэши с новым результатом. |
no-store |
Сообщает DAB не кэшировать ответ вообще (не хранится в L1 или L2 и не пытается получить из кэша). |
Поведение
- Сопоставление директив не учитывает регистр.
- DAB не интерпретирует другие стандартные
Cache-Controlдирективы, такие как max-age или max-stale. - Применяется только к операциям запросов REST. Не используется для директив кэша на уровне запросов GraphQL.
- Значения заголовка HTTP запроса Cache-Control управляют кэшем L1 и L2.
Замечание
DAB не задает заголовки ответов управления кэшем для любой операции кэширования.
Директива: no-cache
Принудительно выполняет новые операции чтения и обновляет слои кэша.
Просьба
GET /api/Books
Cache-Control: no-cache
Accept: application/json
Ответ (пример)
HTTP/1.1 200 OK
Content-Type: application/json
[
{ "id": 1, "title": "The Hobbit" },
{ "id": 2, "title": "The Silmarillion" }
]
Эффект: кэш теперь содержит этот свежий результат (при условии настройки TTL).
Директива: no-store
При наличии используется существующее кэшированное значение; в противном случае запрашивает базу данных, но не заполняет (или не обновляет) кэш с новым результатом.
Просьба
GET /api/Books
Cache-Control: no-store
Accept: application/json
Ответ (пример)
HTTP/1.1 200 OK
Content-Type: application/json
[
{ "id": 1, "title": "The Hobbit" },
{ "id": 2, "title": "The Silmarillion" }
]
Эффект. Если этот результат еще не был кэширован, он не будет сохранен. Последующий only-if-cached запрос может завершиться ошибкой, если предыдущий запрос не заполнял кэш.
Отзыв
- Используйте
no-cache, когда необходимо принудительно обновить базу данных, а также обновить кэш. - Используйте
no-storeпри желании данные, но не хотите, чтобы этот ответ изменил кэш (хотя он может прочитать существующее кэшированное значение). - Опустите заголовок для нормального поведения кэширования.