447 votes

Pourquoi les sites web n'affichent-ils pas immédiatement leur texte de nos jours ?

J'ai remarqué que, ces derniers temps, de nombreux sites Web sont lents à afficher leur texte. En général, l'arrière-plan, les images, etc. sont chargés, mais pas le texte. Après un certain temps, le texte commence à apparaître ici et là (pas toujours tout en même temps).

En fait, il fonctionne à l'inverse de ce qu'il faisait auparavant, lorsque le texte s'affichait en premier, puis les images et le reste se chargeait ensuite. Quelle nouvelle technologie est à l'origine de ce problème ? Avez-vous une idée ?

Notez que je suis sur une connexion lente, ce qui accentue probablement le problème.

Voici un exemple : tout est chargé, mais il faut encore quelques secondes pour que le texte s'affiche enfin :

enter image description here

73 votes

Dans ce cas particulier, PortableApps.com utilise la police "Ubuntu". John a d'abord essayé OpenSans, mais nous sommes passés à Ubuntu assez rapidement. J'étais le principal partisan de ce changement... une façon d'éliminer le problème est d'installer soi-même la famille de polices. Si vous l'installez à partir de font.ubuntu.com cela fonctionnera immédiatement.

21 votes

La réponse de Daniel m'a ouvert les yeux. Je pensais que c'était fait exprès pour que nous puissions voir toutes les publicités sur la page.

1 votes

Comme plusieurs personnes l'ont souligné ici, il existe une infinité de raisons pour que le texte soit rendu de manière inattendue, car le rendu d'une page n'est limité que par l'imagination du développeur/concepteur, ce qui est le cas au moins depuis que les codes de position ANSI ont permis aux tableaux d'affichage des années 1980 de mettre en œuvre des chats multi-utilisateurs et des interfaces utilisateur avec des fenêtres superposées avec ombres portées. Meebo a été l'un des premiers à reproduire certains de ces effets dans un navigateur sans applet. "Fonctionne à l'inverse de ce qu'il faisait auparavant" simplifie énormément l'Internet et ne fait même pas référence à une période spécifique.

481voto

Daniel Andersson Points 22765

L'une des raisons est que les concepteurs de sites web aiment aujourd'hui utiliser des polices de caractères web (généralement en format WOFF ), par exemple par le biais de Polices Web de Google .

Auparavant, les seules polices qui pouvaient être affichées sur un site étaient celles que l'utilisateur avait installées localement. Étant donné que les utilisateurs de Mac et de Windows, par exemple, ne disposaient pas nécessairement des mêmes polices, les concepteurs définissaient toujours instinctivement les règles suivantes

font-family: Arial, Helvetica, sans-serif;

où, si la première police n'était pas trouvée sur le système, le navigateur chercherait la deuxième, et enfin une police de repli "sans-serif".

Maintenant, on peut donner l'URL d'une police comme règle CSS pour que le navigateur télécharge une police, comme telle :

@import url(http://fonts.googleapis.com/css?family=Droid+Serif:400,700);

et ensuite charger la police pour un élément spécifique par ex :

font-family: 'Droid Serif',sans-serif;

C'est très populaire pour pouvoir utiliser des polices personnalisées, mais cela entraîne également le problème suivant : aucun texte n'est affiché tant que la ressource n'a pas été chargée par le navigateur, ce qui inclut le temps de téléchargement, le temps de chargement de la police et le temps de rendu. Je suppose que c'est l'artefact que vous rencontrez.

Un exemple : un de mes journaux nationaux, Dagens Nyheter Lorsque le site est chargé, je vois généralement d'abord les titres, et une demi-seconde plus tard, tous les espaces vides au-dessus sont occupés par les titres (c'est vrai avec Chrome et Opera, au moins.)

(De plus, les concepteurs saupoudrent du JavaScript absolument partout de nos jours, alors peut-être quelqu'un essaie-t-il de faire quelque chose d'intelligent avec le texte, ce qui explique le retard. Mais cela serait très spécifique au site : la tendance générale du texte à être retardé en ces temps est le problème des polices web décrit plus haut, je crois).


Addition

Cette réponse a fait l'objet de nombreux votes, bien que je n'aie pas donné beaucoup de détails, ou peut-être parce que de ceci. Il y a eu de nombreux commentaires dans le fil de la question, je vais donc essayer de m'étendre un peu (beaucoup de commentaires semblent avoir disparu peu de temps après la protection du sujet - un modérateur les a probablement nettoyés manuellement). Lisez également les autres réponses dans ce fil de discussion, car elles sont toutes développées à leur manière.

Le phénomène est apparemment connu sous le nom de "flash of unstyled content" en général, et de "flash of unstyled text" en particulier. La recherche de "FOUC" et "FOUT" donne plus d'informations.

Je peux recommander le billet de Paul Irish, concepteur de sites web, sur FOUT en rapport avec les polices de caractères web .

Ce que l'on peut noter, c'est que les différents navigateurs gèrent cela différemment. J'ai écrit plus haut que j'avais testé Opera et Chrome, qui se sont tous deux comportés de manière similaire. Tous ceux basés sur WebKit (Chrome, Safari, etc.) choisissent d'éviter le FOUT en no rendre le texte de la police Web avec une police de secours pendant la période de chargement de la police Web. Même si la police web est mise en cache, il sera être un retard de rendu . Il y a beaucoup de commentaires dans ce fil de questions qui disent le contraire et qu'il est tout à fait faux que les polices en cache se comportent de cette façon, mais par exemple dans le lien ci-dessus :

Dans quels cas obtiendrez-vous un FOUT

  • Will : Téléchargement et affichage d'un ttf/otf/woff distant
  • Will : Affichage d'un ttf/otf/woff en mémoire cache
  • Will : Téléchargement et affichage d'un data-uri ttf/otf/woff
  • Will : Affichage d'un data-uri en cache ttf/otf/woff
  • Non : Affichage d'une police qui est déjà installée et nommée dans votre pile de polices traditionnelle
  • Non : Affichage d'une police installée et nommée à l'aide de l'emplacement local()

Comme Chrome attend que le risque FOUT disparaisse avant d'effectuer le rendu, cela donne un retard. Auquel étendue l'effet est visible (surtout lors du chargement à partir du cache) semble dépendre, entre autres, de la quantité de texte qui doit être rendu et peut-être d'autres facteurs, mais la mise en cache ne supprime pas complètement l'effet.

Irish propose également quelques mises à jour concernant le comportement du navigateur à partir du 2011-04-14 au bas de l'article :

  • Firefox (à partir de FFb11 et FF4 Final) n'a plus de FOUT ! Wooohoo ! http://bugzil.la/499292 En fait, le texte est invisible pendant 3 secondes, puis la police de secours réapparaît. La webfont se chargera probablement dans ces trois secondes, mais espérons-le
  • IE9 supporte WOFF, TTF et OTF (bien qu'il nécessite un bit d'encastrement chose établie - principalement discutable si vous utilisez WOFF). MAIS ! !! IE9 a un FOUT. :(
  • Webkit a une parcelle en attente d'atterrissage pour afficher le texte de repli après 0,5 seconde. Donc le même comportement que FF mais 0.5s au lieu de 3s.
  • Addition : Blink a un bug enregistré pour cela aussi mais il semble qu'un consensus final n'ait pas été atteint sur ce qu'il convient d'en faire - actuellement, la mise en œuvre est identique à celle de WebKit.

S'il s'agissait d'une question destinée aux concepteurs, on pourrait examiner les moyens d'éviter ce genre de problèmes, par exemple webfontloader mais c'est une autre question. Le lien de Paul Irish donne plus de détails sur cette question.

7 votes

L'un des navigateurs a-t-il essayé de rendre le texte d'abord dans une police disponible, puis de le rendre à nouveau une fois que la police préférée est téléchargée ?

4 votes

Oh, duh, commentez la réponse suivante : paulirish.com/2009/fighting-the-font-face-fout

5 votes

@ratchetfreak ce serait déconcertant de voir la page se reformater puisque les polices n'auraient probablement pas les mêmes métriques.

118voto

Steve Points 131

La raison en est que le texte que vous ne pouvez pas encore lire est rendu avec une police web qui est toujours en cours d'acheminement dans les tuyaux vers votre navigateur.

De plus, comme votre navigateur est Google Chrome, qui utilise WebKit pour rendre la page, il a été décidé par eux (c'est-à-dire WebKit) qu'il est préférable pour vous de ne pas voir de texte du tout jusqu'à ce que la police web soit téléchargée. Si, toutefois, vous êtes un développeur et que vous préférez que le texte soit lisible dans une police système de secours appropriée, vous pouvez utiliser quelque chose comme Le WebFont Loader de Google pour y parvenir.

0 votes

Malheureusement, c'est une mauvaise réponse, si vous visitez cette page une fois, le fichier de la police résidera dans votre caisse web ; pour d'autres pages sur ce site ou d'autres sites web utilisant cette police, il sera récupéré de la caisse.

19voto

mdd Points 1451

Réponse courte : AJAX o WOFF

Il y a plusieurs causes de sites web qui sont "lent à afficher leur texte" . La lenteur sur portableapps.com est causée par le téléchargement WOFF les polices de caractères. Cependant, ce que vous décrivez comme "le texte commence à apparaître ici et là" est plus souvent causée par AJAX .

Un site web est constitué de plusieurs parties. La façon dont ces parties sont téléchargées et assemblées est un choix de conception sous le contrôle de la designer web . La lenteur est causée par la façon dont le développeur choisit d'assembler les blocs de construction suivants :

  • Page HTML initiale
  • CSS
  • JS
  • Images
  • Polices WOFF
  • Demandes AJAX
  • Manipulation du DOM

Sites web traditionnels :

Traditionnellement, il était courant que les développeurs placent le contenu textuel dans le fichier page HTML initiale et l'afficher dès qu'il a été disponible . Le HTML fait référence à plusieurs ressources qui sont ensuite téléchargées. Le navigateur doit alors redessiner progressivement l'écran pour inclure les styles et les images au fur et à mesure de leur disponibilité. AJAX et WOFF n'étaient pas disponibles.


Sites web du WOFF :

Les polices WOFF permettent à un site web d'utiliser des polices qui ne sont pas normalement disponibles pour le navigateur, en télécharger des polices de caractères avec le site web . Certains développeurs demandent au navigateur de ne pas afficher le contenu du texte tant que toutes les polices WOFF n'ont pas été téléchargées. D'après mon expérience, cette approche n'est pas encore très répandue.


Sites web AJAX :

Certains développeurs choisissent de ne pas inclure le contenu textuel dans la page HTML initiale. Au lieu de cela, ils choisissent de télécharger le contenu textuel en utilisant AJAX. Cela se produit après que la page de base ait été chargée . Dans mon expérience, cette méthode a gagné beaucoup adoption plus large que les polices WOFF et est le plus souvent à l'origine de la lenteur que vous décrivez.


Déterminer la cause

Pour déterminer la cause d'un site spécifique, il faut procéder à une analyse à l'aide d'outils comme les suivants Firebug o Outils du développeur Chrome . Ou bien, vous pouvez ouvrir le site en utilisant Internet Explorer 8 qui supporte AJAX mais pas WOFF. Si le site est toujours lent, le problème vient d'AJAX et non de WOFF.

14voto

unspokenblabber Points 500

Je pense que c'est peut-être un choix délibéré pour éviter le "flash du contenu non stylisé". Si le texte s'affichait avant le chargement du CSS, vous le verriez brièvement tel qu'il apparaît brut, puis un flash lorsque le navigateur le redessine. En introduisant des styles de base en ligne pour masquer initialement le contenu, qui sont remplacés par la feuille de style proprement dite, ou en utilisant des JS, les développeurs évitent ce flash.

6 votes

Neuf fois sur dix, ce ne sera pas délibéré, c'est simplement un effet secondaire de l'intégration des polices de caractères web de la manière la plus simple possible. En fait, il faut un peu plus d'efforts pour présenter une alternative visible pendant que les polices Web sont en cours d'intégration. Voir developers.google.com/webfonts/docs/webfont_loader

0 votes

@Marcel - cela peut être dû à des feuilles de style lentes ainsi qu'à des polices lentes, cf. phpied.com/css-et-le-chemin-critique

0 votes

Le code visant à empêcher le "flash de contenu utile", tend à empêcher les images d'apparaître ainsi que le texte.

8voto

Comme d'autres l'ont fait remarquer, les polices personnalisées contribuent probablement au retard.

Pour en savoir plus, le navigateur effectue les opérations suivantes avant de rendre le contenu de la page à l'écran :

  1. récupérer le HTML (plusieurs allers-retours pour le DNS, le TCP, la demande/réponse)
  2. commencer à analyser le HTML, découvrir les ressources externes telles que les CSS et JS externes. Notez que CSS bloque la mise en page, et JS bloque l'analyse. Ainsi, les ressources externes telles que CSS et JS chargées tôt dans le document (par exemple dans l'en-tête) ralentissent le temps nécessaire à une page pour afficher le contenu à l'écran.
  3. récupérer les CSS et JS externes (plusieurs allers-retours : DNS et TCP si ces ressources sont sur un domaine différent tel qu'un CDN, ainsi qu'un RTT pour la demande/réponse)
  4. une fois que le chargement des CSS et JS externes est terminé, analyse/exécution des JS, analyse/application des styles
  5. si la feuille de style en cascade fait référence à des polices personnalisées, ces polices doivent également être téléchargées, ce qui entraîne des délais supplémentaires pour le rendu des parties de la page qui dépendent des polices personnalisées.

Bien qu'il ne concerne pas spécifiquement les retards causés par les polices personnalisées, j'ai récemment écrit un article de blog qui donne des informations supplémentaires sur les causes des retards de rendu. Il donne quelques suggestions pour minimiser le temps de la première peinture de vos pages. J'espère que ces informations seront utiles aux lecteurs désireux de faire en sorte que leurs pages affichent leur contenu plus rapidement, notamment les pages qui souhaitent utiliser des polices personnalisées : http://calendar.perfplanet.com/2012/make-your-mobile-pages-render-in-under-one-second/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X