Как правильно отключить кеширование CloudFront для запросов API - PullRequest
0 голосов
/ 08 октября 2018

У меня AWS CloudFront, настроенный для обслуживания статического контента и сервер API из одного домена.Это означает, что у меня есть два поведения, одно из которых обслуживает шлюз API из /api, а другое - из S3 для всех других путей.

Проблема в том, что я не хочу, чтобы CF кэшировал что-либо с сервера API.Я был удивлен, обнаружив, что не существует «мастер настройки» для полного отключения поведения кэширования;вместо этого документы ссылаются на использование Cache-control: no-cache в источнике или при включении «кэширования на основе всех заголовков» в поведении CF.

Однако ни одно из этих решений полностью не удовлетворяет моему требованию попросто не кеширует и , проходящие через все заголовки.Если я добавлю Cache-control: no-cache к своему источнику, CF, кажется, уважает это, но все еще остается вопрос настроек CF.CF имеет настройку «Кэш на основе заголовков: все / нет / белый список».В документации сказано, что для отключения кэширования следует использовать «Все», что имеет смысл (хотя и немного неопределенно по сравнению с фактическим значением: отключить кэширование: вкл / выкл).Однако, как только я установил для этого параметра значение «Все», все поведение отключилось, и мои запросы API вообще не достигнут шлюза API, а по умолчанию используют поведение S3, используемое для запросов не-API.Я не могу найти никакого объяснения этому, как будто все поведение не работает или отключено без объяснения.

Другая проблема состоит в том, что заголовки, отсутствующие в «Кэше на основе», будут не только исключены из кеширования (чтоВ любом случае я не хочу), но также убрал из запроса, прежде чем он будет отправлен.Это может иметь смысл для кеша, чтобы он работал как задумано, но так как я не хочу никакого кеширования, это довольно печально, чтобы удостовериться, что в белый список включены все заголовки, которые я когда-либо использовал.Было бы намного лучше полагаться на «Все», чем на то, чтобы убедиться, что белый список всегда актуален.

Итак:

1) есть лучший, более ясный способполностью отключить кэширование для одного пути дистрибутива CloudFront?В идеале он не должен даже полагаться на исходную настройку определенных заголовков, он должен просто полностью отключить любую попытку кеширования запросов в пределах настроенного пути.

2) Почему вся моя цель шлюза API отключается, когда я выбираю «Все»"в поле" Кэш на основе заголовков "?Что здесь происходит?

...