Почему бы не всегда использовать HTTP-почту для вызовов ajax?

Я знаю различия между методами HTTP get и post (как подробно изложено в этом вопросе).
Мой вопрос в том, почему не всегда используется метод post для вызовов AJAX, что безопасно. Бывает ли запрос быстрее? есть ли причина предпочесть получить пост?

Для ни одного вызова ajax есть причина - поделиться ссылкой с тем же URL-адресом, но для AJAX этот аргумент это не хорошо...

Ответ 1

Запросы GET меньше и быстрее; и использовать кэширование как на стороне клиента, так и со стороны любых прокси-серверов, которые могут быть в игре.

Для данных, которые, как ожидается, не будут меняться очень часто, запросы GET часто очень разумны, так как они имеют больше шансов, что они не будут вызваны, если это необходимо.

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

Есть также семантические проблемы, которые вступают в игру. Запросы POST действительно должны использоваться только тогда, когда целью является изменение данных на сервере.

Ответ 2

Я читал лучшие практики Yahoo для ускорения ваших веб-сайтов некоторое время назад, и они очень хорошо объяснили, почему мы должны предпочесть переходить по почте, и вот фрагмент сообщения для вашей справки

с использованием XMLHttpRequest, POST реализуется в браузерах как двухэтапный процесс: сначала отправляя заголовки, а затем отправляя данные. Поэтому лучше всего использовать GET, который принимает только один пакет TCP для отправки (если у вас много куки). Максимальная длина URL-адреса в IE составляет 2K, поэтому, если вы отправляете более 2K данных, вы не сможете использовать GET.

Интересным побочным эффектом является то, что POST без фактической публикации каких-либо данных ведет себя как GET. Основываясь на спецификациях HTTP, GET предназначен для получения информации, поэтому имеет смысл (семантически) использовать GET, когда вы только запрашиваете данные, в отличие от отправки данных для хранения на стороне сервера.

Подробную информацию см. на странице

Лучшая практика Yahoo для ускорения

Ответ 3

Мой вопрос в том, почему не всегда использовать метод post для вызовов AJAX

Поскольку в приложении RESTful не имеет смысла использовать глагол POST для действий, которые не изменяют состояние на сервере. В приложении RESTful на самом деле не имеет значения, как был выполнен запрос: был ли он обычным, AJAX или роботом.

Также запросы GET обычно быстрее и кэшируются браузерами.

Ответ 4

GET использует один запрос на сервер против двух для POST.

Согласно команде Yahoo YSlow, вы должны выбрать GET, когда передаваемый контент меньше IE2K. Подробнее здесь: http://developer.yahoo.com/performance/rules.html#ajax_get