web-dev-qa-db-fra.com

Transfert-Encodage: fragmenté

J'essayais de comprendre plus sur Transfer-Encoding:chunked. renvoyé certains articles: http://zoompf.com/blog/2012/05/too-chunky et en-tête "Transfer-Encoding: chunked" en PHP .

Je n'ai toujours pas eu une image très claire. Je comprends que la définition de cet encodage permet au serveur de définir le contenu en bloc sur le navigateur et de provoquer un rendu partiel du contenu à un moment qui rend le site Web réactif.

Si j'ai une application Web qui sert du contenu dynamique (ex: application Web basée sur JSF) hébergée sur IBM WAS, la plupart des pages Web sont conçues pour héberger un contenu statique riche avec beaucoup de fichiers CSS et JS + contenu dynamique. Comment puis-je définir le codage de transfert "fragmenté" pour mes pages? Ou en d'autres termes:

  • Comment décidez-vous quelle page aura 'Transfer-Encoding: chunked' et comment la définissez-vous pour cette page?

Votre expérience personnelle sera certainement précieuse pour ma compréhension.

45
Vicky

Transfer-Encoding: chunked n'est pas nécessaire pour le rendu progressif. Cependant, il est nécessaire lorsque la longueur totale du contenu est inconnue avant l'envoi des premiers octets.

37
Julian Reschke

Lorsque le serveur doit envoyer une grande quantité de données, un codage en morceaux est utilisé par le serveur car il ne savait pas exactement la taille (longueur) des données. En termes HTTP, lorsque le serveur envoie une réponse, l'en-tête Content-Length est omis par le serveur. Au lieu de cela, le serveur écrit la longueur du segment actuel au format hexadécimal suivi de\r\n puis du segment, suivi de\r\n (le contenu commence par la taille du segment en hexadécimal suivi du segment)

Cette fonctionnalité peut être utilisée pour le rendu progressif; cependant, le serveur doit vider les données autant que possible afin que le client puisse rendre le contenu progressivement (en cas de html, css, etc.)

Cette fonctionnalité est souvent utilisée lorsque le serveur envoie des données au client en grandes quantités - généralement en grande taille (méga/giga)

Documentation Mozilla

6
webjockey