Perché il metodo GET è più veloce del POST in HTTP?

Sono appena arrivato alla programmazione web e sono solo curioso di sapere come ottenere e inviare metodi di invio di dati da una pagina all’altra.

Si dice che il metodo Get sia più veloce di Post ma non so perché è una delle ragioni per cui trovo che Get può contenere solo 255 caratteri con esso? Ci sono altri motivi, per favore qualcuno mi spieghi?

Non è molto sulla velocità. Ci sono molti casi in cui il POST è più applicabile. Ad esempio, i motori di ricerca indicizzeranno gli URL GET e i browser potranno aggiungerli ai segnalibri e farli comparire nella cronologia. Di conseguenza, se si intraprendono azioni come la modifica di un DB in base a una richiesta GET, potrebbe essere dannoso in quanto alcuni robot potrebbero anche attraversare l’URL.

L’altro caso può essere un problema di sicurezza. Se pubblichi le credenziali tramite GET, verrà elencato nella cronologia del browser e nei file di registro del server.

Un’altra cosa su http post è che possono essere 2 chiamate quando viene utilizzata l’intestazione http Expect: 100-Continue . Il primo browser invia le intestazioni dei post http e le risposte del server con “HTTP 100 Continua”. Quando il browser riceve questo, invia il corpo reale.

http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_default_in_atlas/

Penso che questa sia la risposta che l’autore stava cercando.

Ci sono diversi equivoci su GET e POST in HTTP. C’è una differenza primaria, GET deve essere idempotente mentre il POST non deve essere. Ciò significa che i GET non causano effetti collaterali, ovvero posso inviare un GET a un’applicazione Web tutte le volte che voglio (credo che si possa premere Ctrl + R o F5 molte volte) e le richieste saranno ‘sicure’

Non posso farlo con il POST, un POST può cambiare i dati sul server. Ad esempio, se ordino un articolo sul web l’articolo dovrebbe essere aggiunto con un POST perché lo stato è cambiato sul server, il numero di elementi che ho aggiunto è aumentato di 1. Se l’ho fatto con un POST e l’aggiornamento del colpo nel browser il browser mi avverte, se lo faccio con un GET il browser invierà semplicemente la richiesta.

Sul server GET vs POST è pura convenzione, cioè spetta a me come sviluppatore garantire che codifico il POST sul server per non ripetere la chiamata. Ci sono vari modi per farlo, ma questa è un’altra domanda.

Per rispondere effettivamente alla domanda se utilizzo GET o POST per eseguire lo stesso compito non c’è differenza di prestazioni.

Puoi leggere la RFC ( http://www.w3.org/Protocols/rfc2616/rfc2616.html ) per maggiori dettagli.

Guardando il protocollo http, POST o GET dovrebbero essere ugualmente facili e veloci da analizzare. Direi che non c’è differenza di prestazioni.

Dai un’occhiata alle intestazioni HTTP non elaborate

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 

Dal mio punto di vista, le prestazioni non dovrebbero essere considerate quando si confrontano GET e POST.

Dovresti pensare a GET come “un posto dove andare” e POST come “fare qualcosa”. Ad esempio, un modulo di ricerca deve essere inviato utilizzando GET perché la pagina dei risultati della ricerca è un “luogo” e l’utente vorrà segnalarlo o recuperarlo dalla cronologia in un secondo momento. Se si invia il modulo utilizzando POST, l’utente può solo ricreare la pagina inviando nuovamente il modulo. D’altra parte, se dovessi eseguire un’azione come fare clic su un pulsante di eliminazione, non vorrai inviarlo con GET, poiché l’azione verrebbe ripetuta ogni volta che l’utente tornasse all’URL.

Solo i miei pochi centesimi dal 2016.

Sto creando un semplice sistema di messaggi. All’inizio ho usato il POST per ricevere nuovi avvisi. In jQuery ho avuto:

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

E in PHP ho usato $ _POST [‘timbro’]. Anche da localhost ho ottenuto 90-100 ms per ogni richiesta come questa. Ho semplicemente cambiato:

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

e in PHP passati a $ _GET [‘stamp’]. Quindi un po ‘meno di 1 minuto di modifiche. Ora ogni richiesta richiede 30-40 ms .

Quindi GET può essere due volte più veloce del POST . Certo che non sempre, ma per piccole quantità di dati ottengo sempre gli stessi risultati.

GET è leggermente più veloce perché i valori vengono inviati nell’intestazione a differenza del POST i valori vengono inviati nel corpo della richiesta, nel formato specificato dal tipo di contenuto.

Di solito il tipo di contenuto è application / x-www-form-urlencoded, quindi il corpo della richiesta utilizza lo stesso formato della stringa di query:

parameter = value & also = another Quando si utilizza un caricamento di file nel modulo, si utilizza invece la codifica multipart / form-data, che ha un formato diverso. È più complicato

Sono d’accordo con altre risposte, ma non è stato detto che le richieste GET possono essere memorizzate nella cache mentre le richieste POST non vengono mai memorizzate nella cache. Penso che questo sia il motivo principale per cui alcune richieste GET vengono eseguite più velocemente. (Di solito questo significa che a volte non viene inviata alcuna richiesta. Quindi non è in realtà la richiesta GET che è più veloce, ma la cache del browser.)

Metodi HTTP: GET vs. POST: http://www.w3schools.com/tags/ref_httpmethods.asp

Il POST farà crescere di più le intestazioni, rendendole più grandi, ma la differenza dovrebbe essere davvero trascurabile, quindi non vedo perché questa dovrebbe essere una preoccupazione.

Ricorda che il modo corretto per parlare HTTP è utilizzare GET solo per le azioni e POST per i dati. Non devi, ma non vuoi neanche avere un caso in cui i robot di Google possano, ad esempio, inserire, eliminare o manipolare dati che erano destinati a essere gestiti da un essere umano semplicemente perché sta seguendo i collegamenti che trova .