Pergunta

Eu sou novo em programação web e apenas curioso para saber sobre os métodos GET e POST de envio de dados de uma página para outra.

Diz-se que o método GET é mais rápido que POST mas eu não sei por que. Uma das razões que eu poderia encontrar é que GET pode ter apenas 255 caracteres? Existe algum outro motivo? Por favor, alguém me explicar.

Foi útil?

Solução

Não é muito sobre a velocidade. Há uma abundância de casos em POST é mais aplicável. Por exemplo, os motores de busca URLs índice GET e navegadores pode marcar-los e torná-los aparecer na história. Como resultado, se você tomar ações como a modificação de um DB com base em uma solicitação GET, pode ser prejudicial como alguns bots pode também atravessar o URL.

O outro caso pode ser problema de segurança. Se você postar credenciais usando GET, ele vai começar listado nos arquivos de histórico do navegador e de log do servidor.

Outras dicas

Outra coisa sobre http post é que pode ser 2 chamadas quando o http header Expect: 100-Continue é usado. Primeiro navegador envia os pós cabeçalhos HTTP e servidor responde com “HTTP 100 Continue”. Quando o navegador recebe isso, ele envia o corpo real.

http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_default_in_atlas/

Eu acho que esta é a resposta que o autor estava procurando.

Há vários equívocos sobre GET e POST em HTTP. Há uma diferença fundamental, GET deve ser idempotentes, enquanto POST não tem que ser. O que isto significa é que GETs causa nenhum efeito colateral, ou seja, eu posso enviar um GET para uma aplicação web como muitas vezes como eu quero (acho que bater Ctrl + R ou F5 muitas vezes) e os pedidos será 'seguro'

Eu não posso fazer isso com POST, um POST pode alterar dados no servidor. Por exemplo, se eu pedir um item na web o item deve ser adicionado com um POST porque o estado é alterado no servidor, o número de itens que você adicionou aumentou em 1. Se eu fiz isso com um POST e atualização hit no navegador o navegador me avisa, se eu fizer isso com um GET o navegador irá simplesmente enviar o pedido.

No GET servidor vs POST é pura convenção, ou seja, cabe a mim como um desenvolvedor para garantir que o código I do POST no servidor para não repetir a chamada. Existem várias maneiras de fazer isso, mas isso é outra questão.

Para realmente responder à pergunta se eu usar GET ou POST para executar a mesma tarefa, não há diferença de desempenho.

Você pode ler o RFC ( http://www.w3.org/Protocols/ RFC2616 / rfc2616.html ) para mais detalhes.

Olhando para o protocolo http, POST ou GET deve ser igualmente fácil e rápido para analisar. Eu diria, não há diferença de desempenho.

Veja a matéria-cabeçalhos 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

Do meu ponto de vista, o desempenho não deve ser considerado quando se comparam GET e POST.

Você deve pensar em GET como "um lugar para ir", e POST como "fazer alguma coisa". Por exemplo, um formulário de pesquisa devem ser apresentadas utilizando GET porque a página de resultado da pesquisa é um "lugar" e que o usuário vai querer marcá-la ou recuperá-lo de sua história em uma data posterior. Se você enviar o formulário usando POST o usuário só pode recriar a página enviando o formulário novamente. Por outro lado, se você fosse para executar uma ação como clicar em um botão excluir, você não quiser enviar este com GET, como a ação seria repetido sempre que o usuário voltou para a URL.

Apenas meus alguns centavos a partir de 2016.

Estou criando um sistema de mensagem simples. No começo eu utilizado POST para receber novos alertas. Em jQuery eu tinha:

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

E em PHP eu usei $ _ POST [ 'selo']. Mesmo a partir de localhost eu tenho 90-100 ms para cada pedido como este. Eu simplesmente mudou:

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

e em PHP mudou para $ _GET [ 'selo']. Então, um pouco menos de 1 minuto de mudanças. Agora, cada pedido leva 30-40 ms .

Assim GET pode ser duas vezes tão rápido quanto POST . É claro que nem sempre mas para pequenas quantidades de dados eu recebo mesmos resultados o tempo todo.

GET é ligeiramente mais rápido porque os valores são enviados no cabeçalho ao contrário do POST os valores são enviados no pedido corpo , no formato que o tipo de conteúdo especifica.

Normalmente, o tipo de conteúdo é application / x-www-form-urlencoded, assim que o corpo solicitação usa o mesmo formato que a string de consulta:

parâmetro = valor e também = outro Quando você usa um upload de arquivo na forma, você usa o multipart / codificação em vez form-data, que tem um formato diferente. É mais complicado.

Eu concordo com outras respostas, mas não foi mencionado que as solicitações GET pode ser armazenado em cache, enquanto solicitações POST nunca são armazenados em cache. Eu acho que esta é a principal razão para algum pedido GET ser realizada mais rapidamente. (Of-grossa Isto significa que, por vezes, nenhuma solicitação é enviada. Por isso, não é realmente o pedido GET que é mais rápido, mas o cache do seu navegador.)

HTTP Métodos: GET vs. POST: http://www.w3schools.com/tags/ ref_httpmethods.asp

POST vai crescer seus cabeçalhos mais, apenas torná-lo maior, mas a diferença deve ser insignificante realmente, então eu não vejo por que isso deve ser uma preocupação.

Apenas tenha em mente que a maneira correta de falar HTTP é usar GET apenas para ações e POST para dados. Você não precisa, mas você também não quer ter um caso em que o Google bots podem, por exemplo, inserir, excluir ou manipular dados que só foi feito para um ser humano para lidar com simplesmente porque ele está seguindo os links que encontra .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top