Pourquoi la méthode GET plus rapide que la POSTE en HTTP?
Je suis nouveau dans la programmation web et simplement curieux de connaître les méthodes POST et GET de l'envoi des données d'une page à l'autre.
Il est dit que la méthode GET est plus rapide que la POSTE, mais je ne sais pas pourquoi.
L'une des raisons que j'ai pu trouver est que vous pourrez prendre seulement 255 caractères?
Est-il une autre raison? Il vous plaît quelqu'un m'expliquer.
- Vous devez choisir d'OBTENIR vs POST si l'action a des effets secondaires, pas perçu de différence de performances.
Vous devez vous connecter pour publier un commentaire.
Il n'est pas beaucoup sur la vitesse. Il y a beaucoup de cas où la POSTE n'est plus applicable. Par exemple, les moteurs de recherche indexe que les URLs et les navigateurs peuvent les marquer et de les afficher dans l'histoire. Par conséquent, si vous prenez des mesures comme la modification de la base de données basé sur une requête GET, il pourrait être nocif que certains robots peuvent également parcourir l'URL.
L'autre cas ne peut être question de sécurité. Si vous publiez des informations d'identification à l'aide de GET, ça va être listé dans l'historique du navigateur et les fichiers journaux de serveur.
Une autre chose à propos de http post, c'est qu'elle peut être de 2 appels lorsque l'en-tête http
Expect: 100-Continue
est utilisé. Premier navigateur envoie l'adresse http post-têtes et le serveur répond avec des “HTTP 100 Continuer”. Lorsque le navigateur reçoit cela, il envoie le corps réel.http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_default_in_atlas/
Je pense que c'est la réponse que l'auteur était à la recherche pour.
query
partie de l'en-tête d'une requête. Pour les requêtes POST - données sont transmises dans le corps de la demande, et lorsque vous envoyez des données à l'aide deContent-Type=application/x-www-form-urlencoded
, les demandes ont presque la même taille (dans la plupart des cas - POST est le plus grand). Mais la différence est insignifiant, à moins de millisecondes par 10 000 demandes...Il ya plusieurs idées fausses à propos de GET et POST en HTTP. Il y a une différence principale, OBTENIR doit être idempotent tandis que le POST n'a pas à être. Ce que cela signifie, c'est que Obtient cause pas d'effets secondaires, j'.e je peux envoyer une à une application web autant de fois que je veux (pensez à en tapant Ctrl+R ou F5 plusieurs fois) et les demandes doivent être "en sécurité"
Je ne peux pas le faire avec la POSTE, un POSTE peut modifier les données sur le serveur. Par exemple, si je commande un article sur le web, l'élément doit être ajouté avec un POST, parce que l'état est modifié sur le serveur, le nombre d'articles que j'ai ajoutée a augmenté de 1. Si je l'ai fait avec un POST et cliquer sur "actualiser" dans le navigateur, le navigateur me prévient, si je le fais avec un GET du navigateur il suffit d'envoyer la demande.
Sur le serveur vs POST est pure convention, c'est à dire à moi en tant que développeur pour m'assurer que je code le message sur le serveur de pas répéter l'appel. Il y a différentes façons de le faire, mais c'est une autre question.
Pour réellement répondre à la question si j'utilise GET ou POST pour effectuer la même tâche il n'y a pas de différence de performances.
Vous pouvez lire les RFC (http://www.w3.org/Protocols/rfc2616/rfc2616.html) pour plus de détails.
En regardant le protocole http, POST ou GET devrait être tout aussi facile et rapide à analyser. Je dirais, il n'y a pas de différence de performances.
Prendre un coup d'oeil à la crue des en-têtes HTTP
http GET
http POST
De mon point de vue, la performance ne devrait pas être considéré comme lorsque l'on compare les GET et POST.
Vous devriez penser à OBTENIR comme "un endroit où aller", et après comme "faire quelque chose". Par exemple, un formulaire de recherche doit être soumis à l'aide de GET parce que la page de résultat de recherche est un "lieu" et l'utilisateur veut mettre en signet ou de le récupérer à partir de leur histoire à une date ultérieure. Si vous envoyez le formulaire à l'aide du POSTE de l'utilisateur ne peut recréer la page en soumettant le formulaire à nouveau. D'autre part, si vous deviez effectuer une action telle que de cliquer sur un bouton supprimer, vous ne voulez pas soumettre avec OBTENIR, tant que l'action devrait être répété chaque fois que l'utilisateur est retourné à l'URL.
Juste mes quelques centimes d'euros à partir de 2016.
Je suis entrain de créer un système de messagerie simple. Au début, j'ai utilisé de POSTE pour recevoir les nouvelles alertes. En jQuery, j'ai eu:
Et en PHP, j'ai utilisé $_POST['marque']. Même à partir de localhost j'ai eu 90 à 100 ms pour chaque requête comme ceci.
J'ai simplement changé:
et en PHP passé à $_GET['marque']. Donc un peu moins de 1 minute de changements. Maintenant, chaque demande est de 30 à 40 ms.
Donc OBTENIR peut être deux fois plus rapide que la POSTE,. Bien sûr, pas toujours, mais pour de petites quantités de données-je obtenir les mêmes résultats tout le temps.
OBTENIR est légèrement plus rapide parce que les valeurs sont envoyées dans le en-tête contrairement à la POST les valeurs sont envoyées dans la requête corps, dans le format que le type de contenu spécifie.
Généralement le type de contenu application/x-www-form-urlencoded, de sorte que le corps de la requête utilise le même format que la chaîne de requête:
paramètre=valeur&aussi=un autre
Lorsque vous utilisez un fichier de téléchargement dans le formulaire, vous utilisez le multipart/form-data codage au lieu de cela, ce qui a un format différent. C'est plus compliqué.
Je suis d'accord avec les autres réponses, mais il n'a pas été mentionné que les demandes peuvent être mis en cache si les demandes ne sont jamais mis en cache. Je pense que c'est la principale raison pour laquelle certains se demande d'être plus rapide.
(De grossier cela signifie que, parfois, aucune demande n'est effectivement envoyé. Par conséquent, il n'est en fait pas la demande qui est plus rapide, mais le cache de votre navigateur.)
HTTP Méthodes: GET vs POST: http://www.w3schools.com/tags/ref_httpmethods.asp
POST va croître votre les en-têtes de plus, il suffit de la rendre plus grande, mais la différence devrait être négligeable vraiment, donc je ne vois pas pourquoi cela devrait être une préoccupation.
Suffit de garder à l'esprit que la bonne façon de parler HTTP est d'utiliser OBTENIR seulement pour les actions et les POST pour les données. Vous n'avez pas à, mais vous ne voulez pas avoir des cas où les robots de Google peut, par exemple, d'insérer, de supprimer ou manipuler des données qui a été fait pour une personne de gérer simplement parce que c'est en suivant les liens qu'il trouve.