Вопрос

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

Говорят, что метод GET быстрее, чем POST, но я не знаю, почему.Одна из причин, по которой я нашел, заключается в том, что GET может принимать только 255 символов?Есть ли другая причина?Пожалуйста, кто-нибудь объясните мне.

Это было полезно?

Решение

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

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

Другие советы

Еще одна вещь, связанная с постом http, это то, что при использовании заголовка http Expect: 100-Continue может быть 2 вызова. Первый браузер отправляет заголовки HTTP-сообщений и ответы сервера с & # 8220; HTTP 100 Продолжить & # 8221 ;. Когда браузер получает это, он отправляет фактическое тело.

http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_s_at_s_s_in_

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

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

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

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

Просто мои несколько центов с 2016 года.

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

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

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

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

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

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

ПОЛУЧАТЬ является немного быстрее поскольку значения отправляются в заголовок в отличие от ПОЧТА значения отправляются в запросе тело, в формате, указанном типом контента.

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

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

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

Методы HTTP: GET vs. POST: http://www.w3schools.com/tags/ ref_httpmethods.asp

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top