Подтвердить что ты не робот

Почему метод GET быстрее POST?

Я просто не знаком с веб-программированием и просто любопытно узнать, какие методы Get и Post отправляют данные с одной страницы на другую.

Говорят, что метод Get быстрее, чем Post, но я не знаю, почему это одна из причин, по которой я могу найти, - это то, что Get может принимать только 255 символов? Есть ли другие причины, пожалуйста, кто-нибудь мне объяснит?

4b9b3361

Ответ 1

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

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

Ответ 2

Еще одна вещь в http post - это два вызова, когда используется http-заголовок Expect: 100-Continue. Первый браузер отправляет заголовки HTTP-сообщений и ответы на сервер с помощью "HTTP 100 Continue". Когда браузер получает это, он отправляет фактическое тело.

http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_default_in_atlas/

Я думаю, что это тот ответ, который автор искал.

Ответ 3

Существует несколько неправильных представлений о 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) для более подробной информации.

Ответ 4

Глядя на протокол 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.

Ответ 5

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

Ответ 6

Только мои небольшие центы с 2016 года.

Я создаю простую систему сообщений. Сначала я использовал POST для получения новых предупреждений. В jQuery у меня было:

$.post('/a/alerts', 'stamp=' + STAMP, function(result)
{
});

И в PHP я использовал $_POST ['штамп]. Даже из localhost я получил 90-100 мс для каждого такого запроса. Я просто изменил:

$.get('/a/alerts?stamp=' + STAMP, function(result)
{
});

а в PHP - $_GET ['stamp']. Так что немного меньше 1 минуты изменений. Теперь каждый запрос занимает 30-40 мс.

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

Ответ 7

GET немного быстрее, потому что значения отправляются в заголовке, в отличие от POST, значения отправляются в запросе body, в формате, указанном типом содержимого.

Обычно тип содержимого - application/x-www-form-urlencoded, поэтому тело запроса использует тот же формат, что и строка запроса:

параметр = значение & также = другое Когда вы используете загрузку файла в форме, вместо этого вы используете кодировку multipart/form-data, которая имеет другой формат. Это сложнее.

Ответ 8

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

Методы HTTP: GET против POST: http://www.w3schools.com/tags/ref_httpmethods.asp

Ответ 9

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

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