Почему не всегда использовать HTTP-сообщение для вызовов ajax? - PullRequest
11 голосов
/ 13 декабря 2011

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

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

Ответы [ 4 ]

10 голосов
/ 13 декабря 2011

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

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

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

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

7 голосов
/ 13 декабря 2011

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

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

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

Подробнее см. На странице подробностей

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

5 голосов
/ 13 декабря 2011

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

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

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

2 голосов
/ 13 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...