From 2ce471dc8bf96d2ad44a78e1d69c3e9a8ed0ed49 Mon Sep 17 00:00:00 2001 From: Goulven Champenois Date: Wed, 25 Nov 2015 15:14:44 +0100 Subject: [PATCH 1/5] Correction coquilles, orthographe, grammaire, typographie --- .../chap01-users-really-respond-to-speed.md | 22 ++--- content/chap02-premiers-concepts.md | 30 +++---- .../chap03-travailler-avec-les-caches-http.md | 90 +++++++++---------- content/chap04-moins-de-requetes-http.md | 56 ++++++------ content/chap05-contenus-plus-petits.md | 42 ++++----- content/chap06-parallelisation.md | 10 +-- 6 files changed, 125 insertions(+), 125 deletions(-) diff --git a/content/chap01-users-really-respond-to-speed.md b/content/chap01-users-really-respond-to-speed.md index d4337a7..65bfc6e 100644 --- a/content/chap01-users-really-respond-to-speed.md +++ b/content/chap01-users-really-respond-to-speed.md @@ -154,10 +154,10 @@ proportionnellement au temps de chargement, sur l'ensemble des valeurs de 0 à 5 [^5]: Illustration originale dans la conférence [« Varnish – A State of the Art High-Performance Reverse Proxy »](http://www.oscon.com/oscon2009/public/schedule/detail/10433) d'Artur Bergman donnée à l'OSCON le 23 juillet 2009 -Votre commerce et votre marque en pâtissent, l’étude Akamaï +Votre commerce et votre marque en pâtissent, l’étude Akamai ---------------------------------------------------------------------------- -Dans une étude de 2006, Akamaï et JupiterResearch ont mesuré l’impact +Dans une étude de 2006, Akamai et JupiterResearch ont mesuré l’impact des performances auprès de 1 000 marchands en ligne. Ils ont trouvé que la lenteur d’un site marchand est le second motif principal d’insatisfaction, juste après les prix trop élevés. @@ -167,7 +167,7 @@ le site, et les trois quarts ne reviendront probablement plus par la suite. Le palier d'insatisfaction se situait à 4 secondes. Au-delà, les abandons deviennent très importants. -Akamaï a relancé une étude similaire en 2009 avec Forrester Consulting. +Akamai a relancé une étude similaire en 2009 avec Forrester Consulting. Là c'est à partir de 3 secondes pour le chargement de la page qu'on identifie 57 % d'abandon parmi les acheteurs, et 80 % qui ne reviendront plus s'ils ont eu un résultat inapproprié. Ces paliers de 3 ou @@ -299,7 +299,7 @@ chargement est donc indéniablement perceptible. Enfin, sur Bing, un ralentissement influe sur le visiteur dès 200 ms. À partir de 500 ms on voit déjà une baisse de plus de 1,2 % du revenu par -visiteur[^11]. Avec une ou deux secondes de ralentissement ce sont +visiteur[^11]. Avec une ou deux secondes de ralentissement se sont respectivement 2,8 % et 4,3 % de perte de revenu par utilisateur. Ces effets négatifs sont accompagnés de pertes de satisfaction utilisateur, de plus faibles taux de clics, et d'une diminution de la propension des @@ -316,9 +316,9 @@ visiteurs à affiner et approfondir leur recherche. ![Évolution des performances suivant le ralentissement sur Bing](img/chap01-evolution-des-performances-suivant-le-ralentissement-sur-bing.png) La baisse de revenus publicitaires est d'ailleurs corrélée par une étude -de Jackob Nielsen en juin 2010 : après un grand délai d'attente, +de Jakob Nielsen en juin 2010 : après un grand délai d'attente, l'utilisateur se concentre sur le contenu et est bien moins à même de -s'arrêter sur les contenus promotionnels. Jackob évoque le passage de +s'arrêter sur les contenus promotionnels. Jakob évoque le passage de 20 % d'attention au promotionnel pour 1 seconde d'attente à 1 % d'attention au promotionnel seulement après 8 secondes d'attente. @@ -578,14 +578,14 @@ entreprises avec des applications lentes ne grossissent pas aussi vite. - De bonnes performances amélioreront votre visibilité dans les moteurs de recherche et diminueront votre coût de publicité en ligne - sur Google + sur Google ; - Quelques dixièmes de secondes de ralentissement peuvent avoir un - impact négatif concret et important sur votre site + impact négatif concret et important sur votre site ; - Il vaut mieux se concentrer sur la façade (réseau, navigateur) que sur la génération des pages (programmation Java, PHP, base de - données) + données) ; - Améliorer la vitesse de votre site fera immédiatement progresser votre taux de rebond, la fidélité de vos visiteurs, le temps passé - sur votre site, et la conversion finale + sur votre site, et la conversion finale ; - L'investissement réalisé est généralement vite amorti, les premiers - jours de travail sont rentabilisés en moins d'un mois + jours de travail sont rentabilisés en moins d'un mois. diff --git a/content/chap02-premiers-concepts.md b/content/chap02-premiers-concepts.md index 5ec680a..d504a87 100644 --- a/content/chap02-premiers-concepts.md +++ b/content/chap02-premiers-concepts.md @@ -117,17 +117,17 @@ vu pour une requête : une suite d’en-têtes avec clef - valeur, une ligne vide, et le corps de la réponse. Le corps de la réponse, c'est ce que le serveur a fait correspondre à la ressource demandée, par exemple un fichier HTML, du code JavaScript, ou du contenu binaire de -du fichier image. +fichier image. ### Les outils Pour explorer les requêtes et les réponses HTTP, les navigateurs web -actuels ont maintenant des outils directement intégrés: Chrome et Firefox +actuels ont maintenant des outils directement intégrés : Chrome et Firefox ont chacun leurs *Developer Tools*. Pour beaucoup d'usages ces outils sont suffisants, mais pour aller plus loin, on pourra télécharger l’extension Firefox nommée HTTPfox, ou encore -l’extension LiveHttpHeaders. L’extension Firebug,ou le site [Web Page Test](http://www.webpagetest.org/) +l’extension LiveHttpHeaders. L’extension Firebug, ou le site [Web Page Test](http://www.webpagetest.org/) peuvent aussi vous montrer le détail de ce qui est envoyé et reçu par les navigateurs. L’extension Firefox nommée TamperData permet même de modifier dynamiquement @@ -206,7 +206,7 @@ HTTP ». Comme on l'a déjà vu dans le chapitre d'introduction, le temps de génération de la page, ce que j'ai appelé la partie « back-end -», est généralement inférieur à la demie-seconde (voire inférieur au dizième de seconde), +», est généralement inférieur à la demi-seconde (voire inférieur au dixième de seconde), et au final négligeable par rapport au temps de chargement total de la page. Quand ce n'est pas le cas, des techniques d'optimisation existent, mais ce n'est pas le sujet de ce livre, nous n'aborderons donc plus ce point. @@ -226,7 +226,7 @@ sur ces deux durées. ### Les outils -Des outils comme Firebug, les outils de développements natifs des navigateurs ou WebPagetest (http://www.webpagetest.org ) vous montreront les différentes étapes d’une requêtes, pour vous permettre de constater où est +Des outils comme Firebug, les outils de développements natifs des navigateurs ou WebPagetest (http://www.webpagetest.org) vous montreront les différentes étapes d’une requêtes, pour vous permettre de constater où est votre problème. Les navigateurs Chrome, Safari et Firefox possèdent nativement des outils équivalents à Firebug. Plusieurs proxy de développement comme HttpWatch peuvent aussi exporter des données similaires. Le graphique alors représenté est appelé vue en cascade. Il est @@ -244,7 +244,7 @@ si une requête bloque les suivantes par exemple. Sur Internet le serveur ne connaît pas la bande passante disponible sur le client, ou sur les éléments réseaux entre le serveur et -le client. Il est donc impossible de savoir à priori à quelle vitesse +le client. Il est donc impossible de savoir a priori à quelle vitesse envoyer les données. Comme les équipements réseaux ne peuvent se permettre de stocker temporairement les données de tout le monde, si des données sont envoyées plus vite qu'on ne peut les @@ -392,7 +392,7 @@ Dans le navigateur Si le réseau occupe une place prépondérante dans le temps de d'affichage d'une page, ce n'est pas le seul domaine qui entre en jeu. -A titre d'exemple, Microsoft identifie onze sous-système pour son navigateur Internet +A titre d'exemple, Microsoft identifie onze sous-systèmes pour son navigateur Internet Explorer : * Réseau : Ce sous-système est responsable de toute la communication @@ -410,7 +410,7 @@ Explorer : * Collections : Ce sous-système est responsable du stockage et de l'accès à toutes les méta-données, pour la page (dans - les entêtes HTML par exemple) ou pour les éléments HTML (attributs) + les entêtes HTML par exemple) ou pour les éléments HTML (attributs). * JavaScript : C'est le sous-système chargé d'exécuter le code JavaScript. @@ -439,7 +439,7 @@ Explorer : l'écran ce que l'utilisateur verra. C'est aussi ce sous-système qui s'occupe éventuellement de l'accélération graphique. -La construction de la page en mémoire et l'affichage dans le navigateur passe donc +La construction de la page en mémoire et l'affichage dans le navigateur passent donc par de nombreuses étapes, susceptibles de générer des ralentissements ou blocages qu'il faudra donc éviter. @@ -449,7 +449,7 @@ de 30 % pour le rendu, 20 % pour JavaScript, 15 % pour l'agencement, et 12 % pour le formatage. Pour un site web plus classique le rendu, l'agencement et le formatage ont bien moins d'importance car ils interviennent une seule fois (le JavaScript ne provoque -pas de changements fréquents dans la page).(notabene : il faudrait trouver un exemple plus moderne) +pas de changements fréquents dans la page). (notabene : il faudrait trouver un exemple plus moderne) Cependant quelques points méritent une attention particulière. @@ -628,7 +628,7 @@ du navigateur. L'adresse about:config vous permettra d'accéder aux options de configurations internes ; nous en utiliserons plusieurs. -Profitez en pour installer au minimum les extensions Firebug, +Profitez-en pour installer au minimum les extensions Firebug, Yslow, Google Page Speed et HTTPfox. Prenez les dernières versions, n'hésitez pas à utiliser les bétas ou versions en développement. Google Page Speed vous donnera un premier graphique en cascade, @@ -669,7 +669,7 @@ pas à y jeter un œil pour savoir comment utiliser tout ça. ### Mesures Il est maintenant temps de prendre vos premières mesures. Prenez -quelques sites exemples : le votre, mais aussi quelques uns que +quelques sites exemples : le votre, mais aussi quelques-uns que vous visitez régulièrement. Faites un répertoire pour chaque et sauvegardez le code source et les mesures. Quand vous aurez exploré tout ce livre vous pourrez voir le chemin parcouru. @@ -707,7 +707,7 @@ vos progrès, jetez un œil à Yslow, puis éventuellement à Google Page Speed. Yslow n'est pas parfait, mais c'est un des meilleurs guides qui existe sur le sujet et Google Page Speed comble les quelques manques. Les statistiques, la mesure du temps de réponse -et les différentes notes (de F à A, A étant la meilleure) vous donneront +et les différentes notes (de A à F, A étant la meilleure) vous donneront un aperçu rapide de là où vous en êtes. ![L'écran d'évaluation Yslow](img/chap02-lecran-devaluation-yslow.png) @@ -771,7 +771,7 @@ donc 200 ms dans notre cas. Même pour joindre New York nous avons dans les 12 000 km en ligne direct aller-retour, donc dans les 120 ms possibles. -Ce sont ces temps là que nous obtenons régulièrement depuis la +Ce sont ces temps-là que nous obtenons régulièrement depuis la France pour joindre des serveurs américains. Toute difficulté ou tout équipement réseau superflu viendrait en sus, et bien entendu cela ne comprend pas le délai de réaction de votre serveur @@ -788,7 +788,7 @@ Il n'est pas la peine de générer toutes les combinaisons entre débit et latence. Malheureusement un faible débit va très souvent avec une forte latence et inversement. Si on trouve parfois des connexions à forte latence et haut débit (les terminaux 3G+ par -exemple), la bande passante restera de toute façon sous utilisée. +exemple), la bande passante restera de toute façon sous-utilisée. Du fait du plafonnement des débits TCP, la bande passante utilisée est en fait plus dépendante de la latence que de la bande passante disponible. diff --git a/content/chap03-travailler-avec-les-caches-http.md b/content/chap03-travailler-avec-les-caches-http.md index 20ebe86..c9e9c38 100644 --- a/content/chap03-travailler-avec-les-caches-http.md +++ b/content/chap03-travailler-avec-les-caches-http.md @@ -4,7 +4,7 @@ Travailler avec les caches HTTP Ce premier chapitre technique aborde les caches HTTP. Notre objectif va être de réduire, presque à zéro, le temps de chargement des composants d'une page web. En fait nous allons faire en sorte que le navigateur -n'ait presque rien à télécharger sur le réseau. Comme chacun peut +n'ait presque rien à télécharger depuis le réseau. Comme chacun peut l'imaginer le gain pour le navigateur, et donc pour le visiteur, est impressionnant. @@ -17,7 +17,7 @@ Il demande plusieurs fois l'affichage d'une même ressource, d'une même icône, d'une même feuille de style. Sur une page web, le trafic réseau représente l'essentiel du temps -d'attente et de chargement. Couper les temps d'attente réseaux et vous +d'attente et de chargement. Couper les temps d'attente réseau et vous aurez une réactivité quasi instantanée. Pour cela le navigateur stocke certaines ressources dans un cache local @@ -75,7 +75,7 @@ permettent d'économiser plus de 90 % de la bande passante lors du second accès. Ils représentent des sites de contenu, des sites vitrine, des sites de commerce, des sites orientés vidéo. Très peu de catégories sont exclues et même la page d'accueil de Google qui n'a pour ainsi dire -aucun composant complexe arrive à diviser par 6 se bande passante. +aucun composant complexe arrive à diviser par 6 sa bande passante. ![Influence du cache sur le poids des pages et le nombre de requêtes HTTP](img/chap03-influence-du-cache-sur-le-poids-des-pages-et-le-nombre-de-requetes-http.png) @@ -102,7 +102,7 @@ site. Au fur et à mesure de leur surf le cache se remplit, et certains anciens éléments sont effacés pour laisser de la place, peut-être les vôtres. Le résultat c'est qu'à la prochaine visite sur votre site, on se retrouve dans la situation d'un cache vide : le navigateur doit -retélécharger tous vos composants. +re-télécharger tous vos composants. Ensuite, certaines politiques de sécurité d'entreprise ou de gestion de la vie privée vident automatiquement et régulièrement le cache de @@ -191,7 +191,7 @@ requête conditionnelle. Il s'agit pour le serveur d'informer le navigateur sur la date de dernière mise à jour du contenu. Dans les téléchargements suivants, le navigateur peut demander au serveur si la ressource a changé. Si ce n'est pas le cas, alors on évite de la -retélécharger. +re-télécharger. ### Détails HTTP @@ -441,7 +441,7 @@ n'utilise qu'un seul serveur pour l'instant, ne vous en préoccupez pas. L'analyse d'un échantillon d'une trentaine de sites français ne dégage pas de consensus fort sur la questions des ETags. À peu près autant -fonctionnent avec ETag que sans ETag. Tout au plus, on peut noter que +fonctionnent avec ETag que sans. Tout au plus, on peut noter que ceux qui ont les meilleures performances, donc qui ont probablement le plus réfléchi à la question, ont plutôt tendance à les désactiver. @@ -501,13 +501,13 @@ HTTP/1.1 200 OK Date: Sun, 02 Nov 2008 15:54:27 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: Sun, 01 Feb 2009 18:44:18 GMT -Expires: Sun, 01, Feb, 20010 18:44:18 GMT +Expires: Sun, 01, Feb, 2010 18:44:18 GMT Cache-Control: max-age=31536000 […] ~~~~~~~ -Jusqu'à l'expiration des contenus – ou si le visiteur renouvelle le +Jusqu'à l'expiration des contenus – ou si le visiteur vide le cache de son navigateur – le navigateur ne fera plus aucune requête pour ces ressources. Cela implique aussi que si vous modifiez l'image ou le fichier concerné, les visiteurs qui l'ont déjà en cache ne verront pas @@ -518,9 +518,9 @@ l'essentiel des sites web. Si le cache d'une ressource a expiré, le navigateur utilisera une requête conditionnelle plus classique pour revalider son contenu (et -éventuellement ne pas avoir à le retélécharger). Il obtiendra alors une +éventuellement ne pas avoir à le re-télécharger). Il obtiendra alors une nouvelle date d'expiration explicite, et éventuellement le nouveau -contenu si la ressource a été mise à jour entre temps. +contenu si la ressource a été mise à jour entre-temps. Si la directive `max-age` est présente en même temps que `must-revalidate`, alors le client peut utiliser le cache pendant le temps indiqué, mais il @@ -576,7 +576,7 @@ préférable) ou à la date de dernière modification (pour des cas très spécifiques) : ~~~~~~~ {.apache} -ExpiresActive On\ +ExpiresActive On ExpiresDefault "access plus 1 month" ExpiresByType text/html "access plus 1 month 15 days 2 hours" ExpiresByType image/gif "modification plus 5 hours 3 minutes" @@ -597,7 +597,7 @@ header("Cache-Control: max-age=$expires") ; Pour des fichiers HTML avec une expiration courte, comme une page d'accueil, n'oubliez pas de gérer aussi les requêtes conditionnelles, afin de permettre au navigateur de revalider son contenu et obtenir une -nouvelle expiration sans tout retélécharger. +nouvelle expiration sans tout re-télécharger. Sur Lighttpd, les paramètres du modExpire sont similaires mais la syntaxe du fichier de configuration laisse plus de latitude pour cibler les @@ -616,13 +616,13 @@ ressources en cache viennent de connexions sécurisées par HTTPS. Le navigateur impose d'avoir au moins établi un échange avec le serveur dans la page courante avant de réutiliser des données de ce serveur dans le cache. En pratique cela veut dire que le premier composant de chaque -domaine accédé en HTTPS sera toujours retéléchargé et jamais pris à -partir du cache, quelles que soient les entêtes que vous lui envoyez. Il +domaine accédé en HTTPS sera toujours re-téléchargé et jamais pris dans +le cache, quelles que soient les entêtes que vous lui envoyez. Il en va de même pour Mozilla Firefox. En fait, on va même un peu plus loin puisque si vous demandez trois images sur un domaine HTTPS, même si ces dernières sont en cache, ce sont -peut-être les trois qui seront retéléchargées. Internet Explorer +peut-être les trois qui seront re-téléchargées. Internet Explorer télécharge la première, à dessein, mais risque de ne pas avoir encore la réponse avant de tenter d'afficher la seconde image. Au lieu d'attendre, il constate qu'il n'a toujours pas établi de connexion, et envoie une @@ -655,7 +655,7 @@ d'utiliser une réécriture d'URL comme celle qui suit (exemple avec mod_rewrite et Apache) mais permet de garder un historique des versions : -~~~~~~~ {.apache .online} +~~~~~~~ {.apache .oneline} RewriteRule ^(.*)-\d\.\d(\.[a-z]{1,5})$ $1$2 ~~~~~~~ @@ -717,7 +717,7 @@ Différencier les copies suivant les utilisateurs et les contextes ----------------------------------------------------------------- Le bénéfice du cache HTTP est indéniable mais il pose d'autres -problèmes : si plusieurs personnes passent pas le même proxy, elles ne +problèmes : si plusieurs personnes passent par le même proxy, elles ne pourront pas accéder à des données personnalisées. De même, les méthodes vues jusqu'à présent empêchent la donnée de varier en fonction du contexte (personne identifiée ou non, présence d'un panier, langue du @@ -741,7 +741,7 @@ en les séparant par des virgules. L'entête suivante permet de servir un cache différent suivant la langue et le navigateur : -~~~~~~~ {.http .response .partial .online} +~~~~~~~ {.http .response .partial .oneline} Vary: Accept-Language, User-Agent ~~~~~~~ @@ -751,7 +751,7 @@ que chaque client a sa propre page et ses propres contenus, sans pour autant s'empêcher de profiter du cache. Pour cela il suffit de rajouter le paramètre `private` à l'entête `Cache-Control`. -~~~~~~~ {.http .response .partial .online} +~~~~~~~ {.http .response .partial .oneline} Cache-Control: private, max-age=3600  ~~~~~~~ @@ -766,7 +766,7 @@ type GET sans erreur, sinon le serveur risque de ne pas déclencher certains traitements en provenance de formulaire (vu que le navigateur a utilisé le cache). -~~~~~~~ {.http .response .partial .online} +~~~~~~~ {.http .response .partial .oneline} Cache-Control: public, max-age=3600  ~~~~~~~ @@ -774,7 +774,7 @@ De manière générale, on choisit entre public et privé suivant que la ressource contient des données propres à l'utilisateur courant ou si elle peut être réutilisée par tout le monde. Dès que vous avez une authentification ou des préférences utilisateurs, c'est probablement un -`Cache-Control:private` qu'il vous faut. +`Cache-Control: private` qu'il vous faut. Cache applicatif HTML5 @@ -785,7 +785,7 @@ pour les applications hors-ligne. Il s'agit de pouvoir utiliser un site web une fois déconnecté, par exemple pour lire du contenu pré-téléchargé ou pour gérer des données comme des e-mails. Les images, illustrations, et composants doivent alors être sauvegardés par l'appareil pour être -réutilisés sans être retéléchargés. +réutilisés sans être re-téléchargés. Un fichier texte, nommé manifeste, liste les différentes ressources qui seront sauvegardées en cache suivant la syntaxe suivante : une première @@ -802,7 +802,7 @@ CACHE MANIFEST Il suffit ensuite de servir ce fichier avec le type mime `text/cache-manifest` et d'en référencer l'adresse dans l'attribut -manifest de la balise `` du document principal : +`manifest` de la balise `` du document principal : ~~~~~~~ {.html} @@ -816,7 +816,7 @@ manifest de la balise `` du document principal : À chaque accès, le navigateur télécharge le manifeste. S'il s'agit d'un nouveau manifeste ou si le contenu a changé toutes les ressources sont -retéléchargées pour être mises à jour. Le cache applicatif HTML5 permet +re-téléchargées pour être mises à jour. Le cache applicatif HTML5 permet en fait d'autres possibilités (liste blanche, fallback, API pour accéder aux différents événement dans le navigateur, etc.) mais cela dépasse le cadre de ce livre. @@ -843,7 +843,7 @@ mise en cache, ils resteraient bloqués à leur ancienne valeur. Ainsi, afin de profiter au maximum du cache, on tente de séparer les composants statiques du reste de la page. En externalisant les feuilles de style et les JavaScript dans des fichiers externes, on permet que ces -codes soient mis en cache, selon les méthodes expliquées plus avant, +codes soient mis en cache, selon les méthodes expliquées plus tôt, quand bien même la page HTML elle-même ne le serait pas. Cette externalisation, où chaque déclaration JavaScript ou CSS est @@ -879,7 +879,7 @@ Ainsi, même si votre page d’accueil n’a pas de commentaires, pourquoi ne pas charger les icônes et codes JavaScript qui sont utilisés dans les pages internes ? Les illustrations courantes, les JavaScripts et feuilles de styles sont de très bon candidats au préchargement. Les -pages HTML elles-même offrent un ration utilité/risque un peu moins +pages HTML elles-même offrent un ratio utilité/risque un peu moins intéressant. **Recommandation** : si votre page courante est très différente des @@ -892,7 +892,7 @@ prétexte d’accélérer les suivantes. Pour cela les ressources à précharger sont initialisées en fin de document, après tout ce qui est utilisé sur le moment. -Une formule assez simple pourrait être utilisée : on multiple le +Une formule assez simple pourrait être utilisée : on multiplie le pourcentage d'utilisateurs qui auront besoin de la ressource dans leurs prochains accès par le surcoût que représente le téléchargement de cette ressource si elle n'est pas préchargée. D'un autre côté on multiplie le @@ -927,7 +927,7 @@ dans HTML5 mais n’est pour l’instant implémentée que dans les navigateurs basés sur le moteur Gecko (dont Mozilla Firefox) et quelques versions du navigateur Blackberry. -~~~~~~~ {.html .partial .online} +~~~~~~~ {.html .partial .oneline} ~~~~~~~ @@ -945,7 +945,7 @@ avant-plan grâce à la propriété JavaScript `document.webkitVisibilityState` qui retournera « visible », « hidden » ou « prerender », suivant les cas. -~~~~~~~ {.html .partial .online} +~~~~~~~ {.html .partial .oneline} ~~~~~~~ @@ -967,14 +967,14 @@ initialisées qu'après l’événement onload de la page courante. La plus simple de ces méthodes alternatives est d’utiliser des requêtes AJAX. Elles ont l’avantage d’être asynchrones et de ne pas avoir d’indicateur de chargement dans l’interface utilisateur. Un sablier ou -un indicateur équivalent donnerait en effet un très mauvais ressenti de +indicateur équivalent donnerait en effet un très mauvais ressenti de performance à l’utilisateur, même si le résultat objectif est intéressant. Il est aussi possible de charger des images en JavaScript avec `new Image()`, de charger une bibliothèque de code JavaScript avec un simple ` - + + ~~~~~~~ From 30362d58be9533f05ca1abcee070916f08d57b04 Mon Sep 17 00:00:00 2001 From: Goulven Champenois Date: Wed, 25 Nov 2015 15:21:55 +0100 Subject: [PATCH 5/5] =?UTF-8?q?Harmonisation=20du=20tableau=20comparant=20?= =?UTF-8?q?le=20t=C3=A9l=C3=A9chargement=20parall=C3=A8le=20par=20navigate?= =?UTF-8?q?ur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/chap06-parallelisation.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/content/chap06-parallelisation.md b/content/chap06-parallelisation.md index d364a40..aa6530f 100644 --- a/content/chap06-parallelisation.md +++ b/content/chap06-parallelisation.md @@ -390,31 +390,31 @@ parallèle les scripts insérés à l'aide de `document.write`. +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ | Navigateur | JS // JS | JS // CSS | JS // IMG | JS // IFRAME | CSS // CSS | CSS // inline JS | Async JS | +=============+==========+===========+===========+==============+============+==================+==========+ -| Android 2.3 | O | O | O | N | Y | N | N | +| Android 2.3 | O | O | O | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Android 3.0 | O | O | O | N | Y | N | N | +| Android 3.0 | O | O | O | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Chrome 11 | O | O | O | N | Y | Y | Y | +| Chrome 11 | O | O | O | N | O | O | O | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Firefox 3.0 | N | N | N | N | Y | N | N | +| Firefox 3.0 | N | N | N | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Firefox 3.5 | O | O | N | N | Y | N | N | +| Firefox 3.5 | O | O | N | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Firefox 3.6 | O | O | O | N | Y | N | Y | +| Firefox 3.6 | O | O | O | N | O | N | O | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Firefox 4.0 | O | O | O | N | Y | Y | Y | +| Firefox 4.0 | O | O | O | N | O | O | O | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| IE 6 et 7 | N | N | N | N | Y | N | N | +| IE 6 et 7 | N | N | N | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| IE 8 | O | O | N | N | Y | N | N | +| IE 8 | O | O | N | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| IE 9 | O | O | O | N | Y | Y | Y | +| IE 9 | O | O | O | N | O | O | O | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Iphone 4.3 | O | O | O | N | Y | N | N | +| Iphone 4.3 | O | O | O | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Opera 11.5 | N | N | N | N | Y | N | N | +| Opera 11.5 | N | N | N | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ -| Safari 6 | O | O | O | N | Y | N | N | +| Safari 6 | O | O | O | N | O | N | N | +-------------+----------+-----------+-----------+--------------+------------+------------------+----------+ [Browserscope](http://www.browserscope.org/?category=network)