Page d'accueil » comment » Pourquoi mon navigateur Web ne parvient-il parfois pas à afficher les temps de téléchargement restants?

    Pourquoi mon navigateur Web ne parvient-il parfois pas à afficher les temps de téléchargement restants?

    Parfois, l'indicateur de progression de téléchargement sur votre navigateur (ou une autre application) jette simplement les mains en l'air et renonce à afficher le temps de téléchargement restant. Pourquoi parfois cloue-t-il le temps de téléchargement prévu et omet-il parfois de le signaler tous ensemble??

    La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..

    La question

    Le lecteur superutilisateur Coldblackice veut savoir pourquoi son navigateur ne nettoie pas toujours la saleté:

    Parfois, lors du téléchargement d’un fichier dans un navigateur Web, la progression du téléchargement ne «connaît» pas la taille totale du fichier, ni sa progression, elle indique simplement la vitesse de téléchargement, avec un total comme "inconnu".

    Pourquoi le navigateur ne connaît-il pas la taille finale de certains fichiers? Où trouve-t-il cette information en premier lieu?

    Où en effet?

    Les réponses

    Gronostaj, contributeur à SuperUser, offre les informations suivantes:

    Pour demander des documents à des serveurs Web, les navigateurs utilisent le protocole HTTP. Vous pouvez connaître ce nom dans votre barre d’adresse (il est peut-être masqué maintenant, mais lorsque vous cliquez sur la barre d’adresse, copiez l’URL et collez-la dans un éditeur de texte, vous verrez: http: // au début). C'est un protocole simple basé sur du texte et qui fonctionne comme ceci:

    Tout d'abord, votre navigateur se connecte au serveur du site Web et envoie l'URL du document qu'il souhaite télécharger (les pages Web sont également des documents) et quelques détails sur le navigateur lui-même (User-Agent, etc.). Par exemple, pour charger la page principale sur le site SuperUser, http://superuser.com/, mon navigateur envoie une demande qui ressemble à ceci:

    GET / HTTP / 1.1 Hôte: superuser.com Connexion: keep-alive Accept: text / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0,8 Agent utilisateur: Mozilla / 5.0 ( Windows NT 6.1; WOW64) Accept-Encodage: gzip, deflate, sdch Accept-Langue: pl-PL, pl; q = 0.8, en-US; q = 0.6, en; q = 0.4 Cookie: [supprimé pour des raisons de sécurité] DNT : 1 Si-Modifié-Depuis: mar., 09 juil. 2013 07:14:17 GMT 

    La première ligne spécifie le document que le serveur doit renvoyer. Les autres lignes sont appelées en-têtes; ils ressemblent à ceci:

    Nom de l'en-tête: Valeur de l'en-tête 

    Ces lignes envoient des informations supplémentaires qui aident le serveur à décider quoi faire..

    Si tout va bien, le serveur répondra en envoyant le document demandé. La réponse commence par un message d'état, suivi de quelques en-têtes (avec des détails sur le document) et enfin, si tout va bien, du contenu du document. Voici à quoi ressemble la réponse du serveur SuperUser à ma requête:

    HTTP / 1.1 200 OK Cache-Control: public, max-age = 60 Content-Type: text / html; charset = utf-8 Expire: mar, 09 juil. 2013 07:27:20 GMT Dernière mise à jour: mar., 09 juil. 2013 07:26:20 GMT Vary: * Options de cadre X: SAMEORIGIN Date: mar, 09 juil. 2013 07:26:19 GMT Content-Length: 139672 [… snip…]  

    Après la dernière ligne, le serveur de SuperUser ferme la connexion.

    La première ligne (HTTP / 1.1 200 OK) contient le code de réponse, dans ce cas c'est 200 OK. Cela signifie que le serveur retournera un document, comme demandé. Lorsque le serveur ne parvient pas à le faire, le code sera autre chose: vous avez probablement déjà vu 404 introuvable, et 403 interdit est assez commun, aussi. Puis les en-têtes suivent.

    Lorsque le navigateur trouve une ligne vide dans la réponse, il sait que tout ce qui passe au-delà de cette ligne correspond au contenu du document demandé. Donc dans ce cas  est la première ligne du code de la page d'accueil du SuperUser. Si je demandais un document à télécharger, il s'agirait probablement de caractères de charabia, car la plupart des formats de document sont illisibles sans traitement préalable..

    Retour aux en-têtes. Le plus intéressant pour nous est le dernier, Contenu-Longueur. Il indique au navigateur le nombre d'octets de données auxquels il doit s'attendre après la ligne vide. Il s'agit donc en gros de la taille du document exprimée en octets. Cet en-tête n'est pas obligatoire et peut être omis par le serveur. Parfois, la taille du document ne peut pas être prédite (par exemple lorsque le document est généré à la volée), parfois les programmeurs fainéants ne l'incluent pas (assez commun sur les sites de téléchargement de pilotes), parfois les sites Web sont créés par des débutants qui ne savent pas d'un tel en-tête.

    Quoi qu'il en soit, quelle qu'en soit la raison, l'en-tête peut être manquant. Dans ce cas, le navigateur ne sait pas combien de données le serveur va envoyer, et affiche donc la taille du document comme suit: inconnu, attendre que le serveur ferme la connexion. Et c'est la raison pour laquelle les tailles de document inconnues.


    Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.