Можно ли кешировать ответ сервера на запрос HTTP POST? - PullRequest
0 голосов
/ 26 октября 2018

Цель состоит в том, чтобы не запускать запрос более одного раза за n дней (по финансовым причинам) - клиент HTTP должен заглянуть в кэш, чтобы определить, доступен ли ответ уже.Поможет ли директива max-age установить n дней в ответе (например, Cache-Control: public, max-age = 604800)?Я знаю, что это доступно для запросов GET с опцией enableCaching (ttl), но можем ли мы добиться аналогичного поведения для запросов POST?

Чтобы возобновить, моя единственная идея состоит в том, что если ответ приходит с максимальным значением n дней.Директива age установлена, это заставит службу, которая делает запрос, сделать еще один вызов через n дней, независимо от того, будет ли это GET или POST.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете запросить кэширование ответов POST, но никаких обещаний нет.Начиная с RFC 7231 :

Ответы на запросы POST кешируются только в том случае, если они содержат явную информацию о свежести (см. Раздел 4.2.1 [RFC7234]).Однако POST-кеширование широко не применяется.

Если вы управляете как сервером, так и клиентом, вы можете:

В тех случаях, когда исходный сервер желает, чтобы клиент мог кэшировать результат POSTтаким образом, который может быть повторно использован более поздним GET, сервер источника МОЖЕТ отправить ответ 200 (ОК), содержащий результат, и поле заголовка Content-Location, которое имеет то же значение, что и эффективный URI запроса POST (Раздел 3.1.4.2).

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

0 голосов
/ 26 октября 2018

Может быть Redis - это то, что вы ищете

...