Почему ПОЛУЧИТЬ метод быстрее, чем POST в HTTP?

Мой сервер XMPP получил основное повышение скорости (извините, никакие фактические числа, чисто наблюдательные) после того, как я последовательно пытался предотвратить их (такие как проверка, если сокет подключен перед попыткой считать больше данных), и предоставление мне способы избежать их (упомянутые методы TryX). Это было только с приблизительно 50 активными (болтающими) виртуальными пользователями.

43
задан Boann 21 March 2019 в 20:41
поделиться

5 ответов

Дело не в скорости. Есть много случаев, когда POST более применим. Например, поисковые системы будут индексировать URL-адреса GET, а браузеры могут добавлять их в закладки и отображать в истории. В результате, если вы предпримете такие действия, как изменение БД на основе запроса GET, это может быть опасно, поскольку некоторые боты также могут проходить по URL-адресу.

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

44
ответ дан 26 November 2019 в 22:28
поделиться

Существует несколько неправильных представлений о GET и POST в HTTP. Есть одно основное отличие: GET должен быть идемпотентным, а POST - нет. Это означает, что GET не вызывают побочных эффектов, т. Е. Я могу отправлять GET в веб-приложение столько раз, сколько захочу (подумайте, нажимая Ctrl + R или F5 много раз), и запросы будут «безопасными»

Я не могу сделать это с помощью POST, POST может изменить данные на сервере. Например, если я заказываю элемент в Интернете, этот элемент должен быть добавлен с помощью POST, потому что состояние изменяется на сервере, количество добавленных элементов увеличилось на 1. Если бы я сделал это с помощью POST и нажал обновить в браузере браузер предупреждает меня, если я сделаю это с помощью GET, браузер просто отправит запрос.

На сервере GET vs POST - это чистое соглашение, т.е. Я как разработчик должен убедиться, что я кодирую POST на сервере так, чтобы , а не повторять вызов. Есть разные способы сделать это, но это другой вопрос.

Чтобы ответить на вопрос, использую ли я GET или POST для выполнения той же задачи, разницы в производительности нет.

Вы можете прочитать RFC ( http : //www.w3.org/Protocols/rfc2616/rfc2616.html ) для получения дополнительных сведений.

28
ответ дан 26 November 2019 в 22:28
поделиться

Если посмотреть на протокол http, POST или GET должны быть одинаково легкими и быстрыми для синтаксического анализа. Я бы сказал, разницы в производительности нет.

Взгляните на необработанные заголовки HTTP

http GET

GET /index.html?userid=joe&password=guessme HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0

http POST

POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

userid=joe&password=guessme

С моей точки зрения, производительность не следует учитывать при сравнении GET и POST.

9
ответ дан 26 November 2019 в 22:28
поделиться

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

Просто подождите. Имейте в виду, что правильный способ использовать HTTP - использовать GET только для действий и POST для данных. Вам не обязательно, но вы также не хотите иметь случай, когда боты Google могут, например, вставлять, удалять или манипулировать данными, которые предназначены только для обработки человеком, просто потому, что он следует по найденным ссылкам. .

0
ответ дан 26 November 2019 в 22:28
поделиться

Вы должны думать о GET как о «месте, куда можно пойти», а о POST как о «выполнении чего-либо». Например, форма поиска должна быть отправлена ​​с использованием GET, потому что страница результатов поиска является «местом», и пользователь захочет добавить ее в закладки или извлечь ее из своей истории позже. Если вы отправляете форму с помощью POST, пользователь может воссоздать страницу, только отправив форму еще раз. С другой стороны, если бы вы выполняли действие, такое как нажатие кнопки удаления, вы не хотели бы отправлять это с помощью GET, поскольку действие будет повторяться всякий раз, когда пользователь возвращается по URL-адресу.

7
ответ дан 26 November 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: