У меня есть экземпляр EC2, обслуживающий соединения Websocket, с CloudFront поверх. Теперь я обслуживаю динамический контент, который нельзя кэшировать в CloudFront, поэтому я фактически отключил кеширование объектов, установив для параметра «Кэш на основе выбранных заголовков запросов» значение «Все».
Мне также нужно обрабатывать строки запроса, поэтому мне пришлось повозиться с опцией «Пересылка и кэширование строки запроса».
Мой вопрос в основном по названию:
Могу ли я заставить CloudFront пересылать все строки запроса, но не кэшировать их?
Кажется, у меня есть три разных варианта, и ни один из них этого не делает, но я могу что-то упустить.
На данный момент я установил опцию «Пересылать все, кэшировать на основе всех».
На самом деле я не знаю, влияет ли то, что происходит в данный момент, на мое приложение каким-либо образом (похоже, что это не так). Надеюсь, что после прочтения некоторых ответов я смогу понять, что кэшируется в результате выбора этой опции.
Я считаю, что вы неверно истолковываете значение Переслать все, кэш на основе всех, который сформулирован не очень четко. Он слишком упрощает или, возможно, даже искажает то, что на самом деле делает опция.
Выбор этого не включает кеширование или вызывает Больше кеширование. Фактически, это вызывает Меньше кеширование. Этот параметр добавляет любые / все параметры строки запроса к ключу кеша, что, в свою очередь, означает, что любые два запроса с точно таким же путем, точно такими же заголовками из белого списка, но разными ключами и / или значениями параметров строки запроса считаются несвязанными запросами. для двух разных объектов, таким образом, даже если первый запрос приводит к кэшированию ответа, второй запрос не будет использовать этот кешированный ответ.
Лучшая фазировка могла бы быть пересылать все и потенциально обслуживать объекты из кеша только тогда, когда все они идентичны. но Рат все еще оставляет желать лучшего, я подозреваю, но, возможно, это несколько проясняет ситуацию.
Если все заголовки внесены в белый список для пересылки, ничего не будет кэшироваться независимо от этого параметра. То же самое верно, если ваш Cache-Control
заголовки из источника указывают CloudFront не кэшировать объект. Поскольку ничего не кэшируется, «кэш на основе всего» не имеет никакого значения, и CloudFront будет делать то, что вы намереваетесь, здесь.