adn Posté 15 Mai 2006 Posté 15 Mai 2006 (modifié) Bonjour, J'ai activé la compression sur un forum phpBB, et je constate qu'effectivement les pages sont compressées mais l'entete je vois qu'elles sont en plus "chunked" : Transfer-Encoding chunked Que cela signifie-t-il ? Modifié 15 Mai 2006 par adn
TheRec Posté 15 Mai 2006 Posté 15 Mai 2006 Cel signifie que le contenu te ta page est transféré en morceaux dont la taille est spécifié juste avant chacun d'eux... Ce qui donnerait : HTTP/1.1 200 OKTransfer-Encoding: chunked<taille-morceau1><données-morceau1><taille-morceau2><données-morceau2>0 Le "0" correspond à la fin du fichier...cela indique que le prochain morceau est vide et HTTP sait ainsi qu'il n'y a plus de morceaux. Au niveau de la compression, cela n'a aucun effet...car tes données sont compressées, puis morcellées...et ensuite ton client reçoit toutes les données, morceau par morceau, et une fois qu'il a reconstitué le tout il effectue la décompression. D'après la RFC2616, le transfer-encoding spécifie la transformation de entity-body dans le message-body (aux points 3.6, 7.2). Et que content-encoding spécifie une transformation de la donnée entité dans le entity-body (au point 7.2.1). Et donc le client DOIT d'abord inverser la transofrmation de transfer-encoding, puis celle de content-encoding.
adn Posté 15 Mai 2006 Auteur Posté 15 Mai 2006 Merci pour ta réponse très précise ! Sais-tu quelles les incidences sur les perfos ? Est-ce plutôt mieux d'avoir les pages chunked ? En fait, c'est l'activation sur phpBB de la compression qui a activé ce mode.
TheRec Posté 15 Mai 2006 Posté 15 Mai 2006 The Chunked transfer-codingHTTP/1.1 resolves the problem of delimiting message bodies by introducing the Chunked transfer-coding. The sender breaks the message body into chunks of arbitrary length, and each chunk is sent with its length prepended; it marks the end of the message with a zero-length chunk. The sender uses the Transfer-Encoding: chunked header to signal the use of chunking. Le marquage du début et de la fin des messages HTTP...c'est très important, car avec HTTP 1.0 on le savais que lorsque l'en-tête Content-Length était spécifiée.This mechanism allows the sender to buffer small pieces of the message, instead of the entire message, without adding much complexity or overhead. All HTTP/1.1 implementations must be able to receive chunked messages.Possibilité de mettre en mémoire tampon de morceaux de données...pas uniquement des pages complètes (j'ai pas souvenir d'un client utilisant ceci :S)The Chunked transfer-coding solves another problem, not related to performance. In HTTP/1.0, if the sender does not include a Content-Length header, the recipient cannot tell if the message has been truncated due to transmission problems. This ambiguity leads to errors, especially when truncated responses are stored in caches.En gros, avec le transfert en morceaux, si tu ne spécifie pas de "Content-Length" le client pourra repartir des derniers morceaux téléchargés lorsqu'il y a interruption de transfert.Source: http://www.research.att.com/~bala/papers/h0vh1.html Les performances sont améliorées dans le sens ou les données sont transmises par flux (streaming) et non envoyée en un bloc... mais j'avoue que je ne comprends pas pourquoi dans le cadre de données compressées ils utilisent cette en-tête. Comme je l'ai expliqué avant..d'abord on reçoit tout puis on décompresse lorsque ce sont des données compressées (et le navigateur le sait car pour envoyer des données compressé on envoie Content-Encoding: gzip;), alors que ce soit par flux successifs ou non je ne pense pas que cela ait de l'importance.
TheRec Posté 15 Mai 2006 Posté 15 Mai 2006 De rien On avait évoqué le transfert morcelé il y a quelques temps sur un sujet différent, dès fois que ça t'intéresse...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant