51 votes

Pourquoi utiliser le schéma d'URI de données?

Fondamentalement, la question est dans le titre.

Beaucoup de gens ont eu la question de comment créer un URI de données et les problèmes qu’ils rencontraient.

Ma question est pourquoi utiliser les données URI?

Quels sont les avantages à faire:

 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
 

Au cours de faire:

 <img src="dot.png" alt="Red dot" />
 

Je comprends que l’on a moins de frais généraux côté serveur (peut-être), mais quels sont les avantages / inconvénients réels de l’utilisation des données URI ?

60voto

Shaz Points 7458

Selon Wikipedia:

Avantages:

  • Requête HTTP et de l'en-tête de la circulation n'est pas requise pour les données incorporées, de sorte les données de l'Uri de consommer moins de bande passante à chaque fois que la surcharge de l'encodage le contenu en ligne en tant que données d'URI est plus petit que le HTTP généraux. Par exemple, le codage base64 pour une image de 600 octets de long serait de 800 octets, de sorte que si une requête HTTP a besoin de plus de 200 octets de surcharge, les données URI serait plus efficace.

  • Pour transférer de nombreux fichiers de petite taille (moins de quelques kilo-octets chacun), cela peut être plus rapide. Les transferts TCP ont tendance à démarrer lentement. Si chaque fichier nécessite une nouvelle connexion TCP, la vitesse de transfert est limité par le temps d'aller-retour plutôt que de la bande passante disponible. À l'aide de HTTP keep-alive améliore la situation, mais ne peut pas entièrement alléger le goulot d'étranglement.

  • Lors de la navigation sécurisée HTTPS site web, les navigateurs web nécessitent généralement de tous les éléments d'une page web être téléchargé via des connexions sécurisées, ou l'utilisateur sera informé de réduction de la sécurité due à un mélange de sécurité et d'insécurité éléments. Sur mal configuré les serveurs, les requêtes HTTPS ont une surcharge importante sur des requêtes HTTP, de sorte que l'incorporation des données dans les Uri peut améliorer la vitesse dans ce cas.

  • Les navigateurs Web sont généralement configurés pour ne faire qu'un certain nombre (souvent les deux) de connexions simultanées de HTTP à un domaine, donc inline des données permet de dégager un lien de téléchargement pour d'autres contenus.

  • Les environnements avec un accès limité ou restreint l'accès à des ressources externes peut incorporer du contenu lorsqu'il est rejeté ou peu pratique de référence à l'extérieur. Par exemple, une avancée HTML champ d'édition pourrait accepter un collage ou de l'image à insérer et de le convertir en données URI masquer la complexité de ressources externes de l'utilisateur. Sinon, un navigateur, vous pouvez les convertir (coder) de l'image en fonction des données de le presse-papiers de données d'url et la coller dans une page HTML champ d'édition. Mozilla Firefox 4 prend en charge cette fonctionnalité.

  • Il est possible de gérer une page multimédia en un seul fichier. E-mail modèles de message peut contenir des images (pour les décors ou les signatures) sans l'image qui apparaît être un "attachement".

Inconvénients:

  • Les données Uri ne sont pas séparément en cache à partir de leur contenant des documents (par exemple, des CSS et des fichiers HTML) donc les données sont téléchargées à chaque fois le contenant des documents sont retéléchargé. Le contenu doit être ré-encodé et re-embedded chaque fois qu'une modification est faite.

  • Internet Explorer jusqu'à la version 7 (environ 15% du marché en janvier 2011), manque de soutien. Cependant, cela peut être surmonté par une portion spécifique de navigateur de contenu. Internet Explorer 8 limites des données Uri pour une longueur maximale de 32 KO.

  • Les données sont inclus à titre de simple ruisseau, et de nombreux environnements de traitement (tels que les navigateurs web) ne peut pas soutenir à l'aide de conteneurs (comme multipart/alternative ou un message/rfc822) afin de fournir une plus grande complexité, tels que les métadonnées, la compression de données, ou la négociation de contenu.

  • Des données codées en Base64 Uri sont 1/3 de plus grande taille que leurs binaire l'équivalent. (Toutefois, ce traitement est réduit à 2 ou 3% si le HTTP serveur compresse la réponse à l'aide de gzip) Données Uri de la rendre plus difficile pour un logiciel de sécurité pour filtrer le contenu.

Selon d'autres sources - Les données d'Url sont significativement plus lente sur les navigateurs mobiles.

6voto

BiAiB Points 2329

Data URI permet de télécharger le contenu généré côté client sans recourir à un "proxy" côté serveur. Voici quelques exemples auxquels je peux penser:

  • enregistrer la sortie d'un élément de la toile en tant qu'image.
  • offrant le téléchargement d'un tableau au format CSV
  • téléchargement de la sortie de tout type d'éditeur en ligne (texte, dessin, code CSS, etc.)

4voto

Andre Holzner Points 6419

J'ai utilisé les données de schéma d'URI, dans plusieurs (C++, Python) applications en ligne de commande pour générer les rapports qui incluent les données des parcelles.

Avoir un seul fichier est très pratique pour envoyer les rapports par e-mail (ou les déplacer en général). Par rapport au format PDF, je n'ai pas besoin d'une bibliothèque supplémentaire (autre qu'un encodage base64 de routine) et je n'ai pas besoin de prendre soin de sauts de page (et je n'ai presque jamais besoin d'imprimer ces rapports). J'ai l'habitude de ne pas mettre ces rapports sur un serveur web, vue sur la système de fichiers local avec un navigateur.

4voto

antitoxic Points 1804

Surtout je trouve l'utilisation de ce si je ne peux pas (pour certaines raisons) utiliser les sprites CSS et je ne veux pas de télécharger chaque petite image unique que je vais utiliser pour le style.

Ou pour une raison quelconque vous ne voulez pas que quiconque de lier l'image à partir de la page externe. Ceci peut être atteint par d'autres méthodes, mais l'incorporation de travaux.

Sinon, personnellement, je n'aurais pas coder des images de grande taille comme les photos. Il est préférable d'avoir de vos médias sur un serveur différent. Un serveur qui ne disposent pas tous de du serveur web liés logiciel installé. Simplement la fourniture de médias. Beaucoup meilleure utilisation des ressources.

2voto

odoepner Points 31

Je suis d'accord avec BiAiB que la valeur réelle de Données Uri est faire côté client, le contenu généré disponible en tant que téléchargement de fichier, sans besoin de serveur d'aller-retours.

Un exemple de l'utilisation des Données des URIs pour son "offre de téléchargement d'une table au format CSV" est décrit sur mon blog.

À mon humble avis, l'incorporation de l'image (ou autre ressource binaire) des données dans un fichier HTML pour des raisons de performances est un leurre. Le gain de vitesse en raison de moins de connexions HTTP est négligeable et les pauses le beau principe de la séparation entre (textuel) de balisage et binaire des ressources (fichiers images, vidéos, etc.).

Je pense que HTTP 1.1 pipelining et certains ont suggéré d'améliorer HTTP sont un nettoyant et une meilleure façon de gérer HTTP problèmes de vitesse de réseau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X