Общий:
В основном POST не является идемпотентной операцией . Таким образом, вы не можете использовать его для кэширования. GET должен быть идемпотентной операцией, поэтому он обычно используется для кэширования.
См. Раздел 9.1 HTTP 1.1 RFC 2616 S. 9.1 .
Кроме семантики метода GET:
Сам метод POST семантически предназначен для публикации чего-либо на ресурсе. POST не может быть кэширован, потому что если вы делаете что-то один раз против двух против трех раз, то вы каждый раз изменяете ресурс сервера. Каждый запрос имеет значение и должен быть доставлен на сервер.
Сам метод PUT семантически предназначен для размещения или создания ресурса. Это идемпотентная операция, но она не будет использоваться для кэширования, поскольку в это время могла произойти УДАЛЕНИЕ.
Сам метод DELETE семантически предназначен для удаления ресурса. Это идемпотентная операция, но она не будет использоваться для кэширования, поскольку в это время мог произойти PUT.
Относительно кэширования на стороне клиента:
Веб-браузер всегда будет пересылать ваш запрос, даже если он получил ответ от предыдущей операции POST. Например, вы можете отправлять электронные письма с Gmail через пару дней. Они могут иметь одинаковую тему и текст, но оба сообщения должны быть отправлены.
Относительно кэширования прокси:
Прокси-HTTP-сервер, который пересылает ваше сообщение на сервер, никогда не кэширует ничего, кроме запроса GET или HEAD.
Относительно кэширования сервера:
Сервер по умолчанию не обрабатывает запрос POST автоматически, проверяя его кэш. Но, конечно, запрос POST может быть отправлен в ваше приложение или надстройку, и вы можете иметь свой собственный кэш, который вы читаете, когда параметры совпадают.
Аннулирование ресурса:
Проверка HTTP 1.1 RFC 2616 S. 13.10 показывает, что метод POST должен сделать недействительным ресурс для кэширования.