14Sep

Pourquoi mon navigateur Web ne parvient-il pas à afficher les durées de téléchargement restantes?

click fraud protection

Parfois, la jauge de téléchargement fidèle sur votre navigateur( ou autre application) jette simplement ses mains en l'air et abandonne l'affichage du temps de téléchargement restant. Pourquoi clique-t-il parfois sur le temps de téléchargement projeté et parfois ne parvient pas à le signaler tous ensemble?

Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.

La question

SuperUser lecteur Coldblackice veut savoir pourquoi son navigateur ne met pas toujours la saleté:

Occasionnellement, lors du téléchargement d'un fichier dans un navigateur web, la progression du téléchargement ne "connait" pas la taille totale du fichier, ouà quelle distance dans le téléchargement il est - il montre juste la vitesse à laquelle il est téléchargé, avec un total comme "Inconnu".

Pourquoi le navigateur ne connaîtrait-il pas la taille finale de certains fichiers? D'où vient cette information en premier lieu?

instagram viewer

Où en effet?

Les réponses

SuperUser contributeur Gronostaj offre l'aperçu suivant:

Pour demander des documents à partir de serveurs Web, les navigateurs utilisent le protocole HTTP.Vous connaissez peut-être ce nom dans votre barre d'adresse( il 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 simple protocole textuel qui fonctionne comme ceci:

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

GET / HTTP / 1.1 Hôte: superuser.com Connexion: keep-alive Accepter: text / html, application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Agent-utilisateur: Mozilla / 5.0( Windows NT 6.1; WOW64) Accept-Codage: gzip, deflate, sdch Accept-Language: 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 Jul 2013 07:14:17 GMT

Le premierline spécifie quel document le serveur doit renvoyer. Les autres lignes sont appelées en-têtes;ils ressemblent à ceci:

Nom d'en-tête: Valeur d'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 pour ma requête:

HTTP / 1.1 200 OK Cache-Control: public, max-age = 60 Type de contenu: text / html;charset = utf-8 Expire: mar., 09 juil. 2013 07:27:20 GMT Dernière mise à jour: Mar 9 Jul 2013 07:26:20 GMT Varie: * X-Frame-Options: SAMEORIGIN Date: mar, 09 juil. 201307:26:19 GMT Content-Length: 139672 & lt;! DOCTYPE html & gt;& lt; html & gt;[... snip. ..] & lt; / html & gt;

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 quelque chose d'autre: vous avez probablement vu 404 Not Found, et 403 Forbidden est assez commun, aussi. Ensuite, 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 & lt;! DOCTYPE html & gt;est la première ligne du code de la page d'accueil du SuperUser. Si je demandais un document à télécharger, ce serait probablement des caractères charabia, car la plupart des formats de documents sont illisibles sans traitement préalable.

Retour aux en-têtes. Le plus intéressant pour nous est le dernier, Content-Length. Il informe le navigateur du nombre d'octets de données auxquels il doit s'attendre après la ligne vide, donc, fondamentalement, c'est 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 paresseux ne l'incluent pas( assez commun sur les sites de téléchargement de pilotes), parfois les sites sont créés par des débutantsd'un tel en-tête.

De toute façon, quelle que 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 inconnu , en attendant que le serveur ferme la connexion. Et c'est la raison de la taille inconnue des documents.

Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.