{"id":48776,"date":"2021-10-01T13:25:13","date_gmt":"2021-10-01T11:25:13","guid":{"rendered":"https:\/\/kinsta.com\/?p=102244"},"modified":"2023-10-19T12:59:34","modified_gmt":"2023-10-19T11:59:34","slug":"optimiser-css","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/","title":{"rendered":"Comment optimiser les CSS pour une performance maximale du site"},"content":{"rendered":"<p>M\u00eame en 2021, les performances web restent un probl\u00e8me. Selon HTTP Archive, une page moyenne n\u00e9cessite un <a href=\"https:\/\/httparchive.org\/reports\/page-weight?start=latest\" target=\"_blank\" rel=\"noopener noreferrer\">t\u00e9l\u00e9chargement de 2 Mo<\/a>, effectue plus de 60 requ\u00eates HTTP et peut prendre <a href=\"https:\/\/httparchive.org\/reports\/loading-speed?start=latest\" target=\"_blank\" rel=\"noopener noreferrer\">18 secondes<\/a> pour se charger compl\u00e8tement sur un appareil mobile. Les feuilles de style repr\u00e9sentent 60 ko r\u00e9partis sur sept requ\u00eates, elles sont donc rarement une priorit\u00e9 absolue lorsqu&rsquo;on tente de r\u00e9soudre les probl\u00e8mes de performance.<\/p>\n<p>Cependant, les feuilles de style ont un effet, m\u00eame s&rsquo;il semble minime. Une fois que vous avez r\u00e9gl\u00e9 votre probl\u00e8me de <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-javascript\/\">JavaScript<\/a>, apprendre \u00e0 optimiser correctement les CSS devrait \u00eatre la prochaine priorit\u00e9.<\/p>\n<p>Allons-y !<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Comment le CSS affecte les performances de page<\/h2>\n<p>CSS a l&rsquo;air innocent mais peut n\u00e9cessiter un traitement lourd.<\/p>\n<h3>CSS bloquant le rendu<\/h3>\n<p>Lorsque votre navigateur rencontre une balise <code>&lt;link&gt;<\/code>, il interrompt les autres t\u00e9l\u00e9chargements et traitements du navigateur pendant qu&rsquo;il r\u00e9cup\u00e8re et analyse le fichier CSS.<\/p>\n<p>JavaScript peut aussi <a href=\"https:\/\/kinsta.com\/fr\/blog\/eliminer-javascript-css-bloquant-rendu\/\">bloquer le rendu du navigateur<\/a>, mais le traitement asynchrone est possible avec :<\/p>\n<ol>\n<li>L&rsquo;attribut <code>async<\/code> pour t\u00e9l\u00e9charger des scripts en parall\u00e8le, qui sont ex\u00e9cut\u00e9s d\u00e8s qu&rsquo;ils sont pr\u00eats.<\/li>\n<li>L&rsquo;attribut <code>defer<\/code> pour t\u00e9l\u00e9charger en parall\u00e8le, puis ex\u00e9cuter dans l&rsquo;ordre lorsque le DOM est pr\u00eat.<\/li>\n<li>L&rsquo;attribut <code>type=\"module\"<\/code> pour charger un module ES (qui se comporte comme <code>defer<\/code>).<\/li>\n<\/ol>\n<p>Les ressources telles que les images n\u00e9cessitent souvent plus de bande passante, mais <a href=\"https:\/\/kinsta.com\/fr\/blog\/webp\/\">des formats efficaces sont disponibles<\/a>, et ils peuvent \u00eatre <a href=\"https:\/\/kinsta.com\/fr\/blog\/lazy-load-wordpress\/\">charg\u00e9s de mani\u00e8re diff\u00e9r\u00e9e<\/a> ( attribut<code>loading=\"lazy\"<\/code> ) sans bloquer le rendu du navigateur.<\/p>\n<p>Rien de tout cela n&rsquo;est possible avec CSS. Le fichier est mis en cache, donc les chargements de pages suivants <em>devraient<\/em> \u00eatre plus rapides, mais le blocage du rendu demeure.<\/p>\n\n<h3>Les gros fichiers CSS prennent du temps \u00e0 \u00eatre trait\u00e9s<\/h3>\n<p>Plus votre feuille de style est grande, plus il lui faut du temps pour \u00eatre t\u00e9l\u00e9charg\u00e9e et trait\u00e9e dans un mod\u00e8le d&rsquo;objet CSS (CSSOM), que le navigateur et les API JavaScript peuvent utiliser pour afficher la page. Bien que les feuilles de style CSS soient plus petites que la plupart des autres fichiers de sites web, elles ne sont pas \u00e0 l&rsquo;abri de la r\u00e8gle empirique \u00ab plus c&rsquo;est petit, mieux c&rsquo;est \u00bb.<\/p>\n<h3>Les fichiers CSS grossissent<\/h3>\n<p>Il peut \u00eatre difficile d&rsquo;identifier les styles qui ne sont plus utilis\u00e9s, et supprimer les mauvais peut faire des ravages sur un site. Les d\u00e9veloppeurs optent g\u00e9n\u00e9ralement pour l&rsquo;approche la plus s\u00fbre \u00ab tout conserver \u00bb. Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/le-paquet-ne-peut-pas-etre-installe\/\">styles de page<\/a>, les <a href=\"https:\/\/kinsta.com\/fr\/blog\/composants-web\/\">composants<\/a> et les widgets qui ne sont plus utilis\u00e9s continuent d&rsquo;exister dans le CSS. Le r\u00e9sultat ? La taille du fichier, la complexit\u00e9 et l&rsquo;effort de maintenance augmentent de fa\u00e7on exponentielle, ce qui rend les d\u00e9veloppeurs de moins en moins enclins \u00e0 supprimer le code redondant.<\/p>\n<h3>Les feuilles de style peuvent r\u00e9f\u00e9rencer d&rsquo;autres ressources<\/h3>\n<p>Le CSS peut r\u00e9f\u00e9rencer d&rsquo;autres feuilles de style \u00e0 l&rsquo;aide des r\u00e8gles @import. Ces importations bloquent le traitement de la feuille de style actuelle et chargent d&rsquo;autres fichiers CSS <strong>en s\u00e9rie<\/strong>.<\/p>\n<p>D&rsquo;autres ressources, comme les polices et les images, peuvent \u00e9galement \u00eatre r\u00e9f\u00e9renc\u00e9es. Le navigateur tentera d&rsquo;optimiser les t\u00e9l\u00e9chargements, mais en cas de doute, il les r\u00e9cup\u00e9rera imm\u00e9diatement. Les fichiers encod\u00e9s en base64 subissent encore un traitement suppl\u00e9mentaire.<\/p>\n<h3>Rendu des effets CSS<\/h3>\n<p>Les navigateurs ont trois <a href=\"https:\/\/kinsta.com\/fr\/blog\/optimiser-chemin-rendu-critique\/\">phases de rendu<\/a>:<\/p>\n<ol>\n<li>La phase de <strong>mise en page<\/strong> (ou <strong>refonte<\/strong>) calcule les dimensions de chaque \u00e9l\u00e9ment et la fa\u00e7on dont il affecte la taille ou le positionnement des \u00e9l\u00e9ments qui l&rsquo;entourent.<\/li>\n<li>La phase de <strong>peinture <\/strong>dessine les parties visuelles de chaque \u00e9l\u00e9ment sur des couches s\u00e9par\u00e9es : texte, couleurs, images, bordures, ombres, etc.<\/li>\n<li>Le <strong>composite <\/strong>dessine chaque couche sur la page dans l&rsquo;ordre correct selon les contextes d&#8217;empilage, le positionnement, les z-index, etc.<\/li>\n<\/ol>\n<p>Si vous ne fa\u00eetes pas attention, les changements de propri\u00e9t\u00e9s et les animations CSS peuvent entra\u00eener un nouveau rendu des trois phases. Certaines propri\u00e9t\u00e9s, comme les ombres et les d\u00e9grad\u00e9s, sont \u00e9galement plus co\u00fbteuses en termes de calcul que les couleurs de bloc et les marges.<\/p>\n<h2>Outils d&rsquo;analyse des performances CSS<\/h2>\n<p>Admettre que vous avez un probl\u00e8me de performances CSS est la premi\u00e8re \u00e9tape sur le chemin de la gu\u00e9rison ! Trouver et r\u00e9parer les causes est une autre affaire.<\/p>\n<p>Les outils et services suivants (non class\u00e9s dans un ordre quelconque) peuvent vous aider \u00e0 identifier les goulots d&rsquo;\u00e9tranglement stylistiques dans votre code.<\/p>\n<h3>1. Panneau r\u00e9seau DevTools<\/h3>\n<p>Les sp\u00e9cialistes des performances web passent beaucoup de temps dans <a href=\"https:\/\/kinsta.com\/fr\/blog\/inspecter-elements\/\">DevTools<\/a> et le panneau <strong>R\u00e9seau<\/strong> en particulier. DevTools est natif de la <a href=\"https:\/\/kinsta.com\/fr\/parts-de-marche-des-navigateurs\/\">plupart des navigateurs modernes<\/a>, mais nous utiliserons Google Chrome dans nos exemples.<\/p>\n<p>DevTools peut \u00eatre ouvert \u00e0 partir du menu du navigateur, g\u00e9n\u00e9ralement dans <strong>Plus d&rsquo;outils<\/strong> &gt; <strong>Outils de d\u00e9veloppement<\/strong>, ou via les raccourcis clavier <strong>Ctrl | Cmd + Shift + I<\/strong> ou <strong>F12<\/strong>.<\/p>\n<p>Passez \u00e0 l&rsquo;onglet <strong>R\u00e9seau<\/strong> et assurez-vous que la case <strong>D\u00e9sactiver le cache<\/strong> est coch\u00e9e pour \u00e9viter que les fichiers mis en cache n&rsquo;affectent le rapport. Vous pouvez aussi modifier l&rsquo;option d&rsquo;\u00e9tranglement pour simuler des r\u00e9seaux mobiles plus lents.<\/p>\n<p>Rafra\u00eechissez la page pour afficher le graphique de la cascade de t\u00e9l\u00e9chargement et de traitement :<\/p>\n<figure style=\"width: 781px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\" alt=\"Panneau R\u00e9seau de DevTools.\" width=\"781\" height=\"635\"><\/a><figcaption class=\"wp-caption-text\">Panneau R\u00e9seau de DevTools.<\/figcaption><\/figure>\n<p>Toute barre longue est source d&rsquo;inqui\u00e9tude, mais vous devez vous m\u00e9fier tout particuli\u00e8rement des barres longues bloqu\u00e9es\/stagn\u00e9es (indiqu\u00e9es en blanc). Dans cet exemple, la ligne en surbrillance et toutes les lignes suivantes n&rsquo;ont pas pu commencer \u00e0 se t\u00e9l\u00e9charger tant que les fichiers CSS et JavaScript bloquant le rendu n&rsquo;ont pas \u00e9t\u00e9 trait\u00e9s en haut de la page HTML.<\/p>\n<p>La case <strong>Filtre <\/strong>vous permet d&rsquo;afficher ou de masquer des resssources sp\u00e9cifiques :<\/p>\n<ul>\n<li><code>lager-than:<em>&lt;S&gt;<\/em><\/code>: Limite aux fichiers plus grands que <em>&lt;S&gt;<\/em>, exprim\u00e9s en octets (10 000), kilo-octets (1 000 Ko) ou m\u00e9ga-octets (1 Mo)<\/li>\n<li><code>-larger-than:&lt;S&gt;<\/code>: Limite les fichiers plus petits que <em>&lt;S&gt;<\/em><s><\/s><\/li>\n<li><code>-domain:*&lt;.yourdomain.com&gt;<\/code>: Affiche les requ\u00eates tierces qui ne sont pas charg\u00e9es depuis votre domaine principal. Celles-ci contribuent grandement \u00e0 la lenteur des sites.<\/li>\n<\/ul>\n<p>Une page tr\u00e8s performante avec un CSS optimis\u00e9 a g\u00e9n\u00e9ralement moins de ressources charg\u00e9es en parall\u00e8le avec de courtes barres bloqu\u00e9es\/stock\u00e9es.<\/p>\n<h3>2. WebPageTest<\/h3>\n<p><a href=\"https:\/\/www.webpagetest.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">WebPageTest<\/a> fournit une vue similaire de la cascade de r\u00e9seaux, ainsi que de nombreux autres graphiques de performance :<\/p>\n<figure style=\"width: 1023px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\" alt=\"Cascade de ressources de WebPageTest.org\" width=\"1023\" height=\"667\"><\/a><figcaption class=\"wp-caption-text\">Cascade de ressources de WebPageTest.org<\/figcaption><\/figure>\n<p>Le service utilise des appareils bas\u00e9s dans divers endroits du monde pour que vous puissiez \u00e9valuer les performances r\u00e9elles et les optimisations CSS.<\/p>\n<h3>3. Panneau Chrome DevTools Lighthouse<\/h3>\n<p>Le panneau DevTools <strong>Lighthouse <\/strong>est fourni dans les navigateurs bas\u00e9s sur Chromium tels que Chrome, Edge, Brave, Opera et Vivaldi. Vous pouvez g\u00e9n\u00e9rer des rapports sur les performances, les Progressive Web App, les meilleures pratiques, l&rsquo;accessibilit\u00e9 et <a href=\"https:\/\/kinsta.com\/fr\/blog\/seo-wordpress\/\">l&rsquo;optimisation des moteurs de recherche<\/a> pour les appareils mobiles et de bureau.<\/p>\n<figure style=\"width: 738px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\" alt=\"Panneau DevTools Lighthouse.\" width=\"738\" height=\"787\"><\/a><figcaption class=\"wp-caption-text\">Panneau DevTools Lighthouse.<\/figcaption><\/figure>\n<p>L&rsquo;outil fait des suggestions d&rsquo;am\u00e9lioration, notamment des moyens d&rsquo;optimiser les CSS. Toutes ne sont pas forc\u00e9ment pratiques ou possibles, mais les gains rapides les plus b\u00e9n\u00e9fiques sont mis en \u00e9vidence.<\/p>\n<h3>4. Google PageSpeed Insights<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/google-pagespeed-insights\/\" target=\"_blank\" rel=\"noopener noreferrer\">PageSpeed Insights<\/a> est la version en ligne de Lighthouse. Elle a moins de fonctionnalit\u00e9s mais peut \u00eatre utilis\u00e9e dans n&rsquo;importe quel navigateur et fournit d&rsquo;autres aper\u00e7us.<\/p>\n<p>Par exemple, un treemap montre les ressources JavaScript les plus importants avec une mesure de couverture, qui indique quelle proportion de code est utilis\u00e9e et non utilis\u00e9e :<\/p>\n<figure style=\"width: 1254px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\" alt=\"Treemap de Google PageSpeed Insights.\" width=\"1254\" height=\"967\"><\/a><figcaption class=\"wp-caption-text\">Treemap de Google PageSpeed Insights.<\/figcaption><\/figure>\n<p>Les CSS ne sont pas affich\u00e9s, mais la quantit\u00e9 de JavaScript aura une incidence sur l&rsquo;efficacit\u00e9 des styles.<\/p>\n<p>Parmi les <a href=\"https:\/\/kinsta.com\/fr\/blog\/test-vitesse-site-web\/#website-speed-test-tools\">outils similaires de test de la vitesse des sites web<\/a> figurent <a href=\"https:\/\/tools.pingdom.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pingdom Website Speed Test<\/a> et <a href=\"https:\/\/kinsta.com\/fr\/blog\/test-vitesse-gtmetrix\/\">GTmetrix<\/a>.<\/p>\n<h3>5. Panneau DevTools Couverture de Chrome<\/h3>\n<p>Le panneau DevTools <strong>Couverture<\/strong> des navigateurs bas\u00e9s sur Chromium aide \u00e0 localiser le code CSS (et JavaScript) inutilis\u00e9. S\u00e9lectionnez <strong>Couverture<\/strong> dans le sous-menu DevTools <strong>Plus d&rsquo;outils<\/strong>, puis rafra\u00eechissez votre page et parcourez votre site\/application :<\/p>\n<figure style=\"width: 752px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\" alt=\"Panneau DevTools Couverture.\" width=\"752\" height=\"793\"><\/a><figcaption class=\"wp-caption-text\">Panneau DevTools Couverture.<\/figcaption><\/figure>\n<p>Les ressources CSS et JavaScript sont affich\u00e9es dans le panneau <strong>Couverture <\/strong>, avec la proportion de code inutilis\u00e9 en rouge. Cliquez sur n&rsquo;importe quel fichier pour afficher sa source, le code inutilis\u00e9 \u00e9tant mis en \u00e9vidence en rouge dans la goutti\u00e8re du num\u00e9ro de ligne.<\/p>\n<p>Quelques \u00e9l\u00e9ments \u00e0 prendre en compte :<\/p>\n<ul>\n<li>Les mesures de couverture se r\u00e9initialisent si vous actualisez ou naviguez vers une nouvelle page, ce qui est typique d&rsquo;un site WordPress. La mesure du code inutilis\u00e9 ne diminuera que si vous naviguez sur une application mono-page qui charge le contenu sans rafra\u00eechissement de la page.<\/li>\n<li>L&rsquo;outil ne peut rendre compte que du CSS utilis\u00e9 jusqu&rsquo;\u00e0 un moment donn\u00e9. Il ne peut pas d\u00e9terminer si un widget n&rsquo;a pas \u00e9t\u00e9 consult\u00e9 ou s&rsquo;il a plusieurs \u00e9tats li\u00e9s \u00e0 JavaScript.<\/li>\n<\/ul>\n<h3>6. Moniteur de performance en temps r\u00e9el de Chrome DevTools<\/h3>\n<p>Les navigateurs bas\u00e9s sur Chromium disposent d&rsquo;un moniteur de performance en temps r\u00e9el. L\u00e0 encore, il est disponible dans le menu DevTools <strong>Plus d&rsquo;outils<\/strong>. Les graphiques se mettent \u00e0 jour lorsque vous naviguez dans les pages, que vous fa\u00eetes d\u00e9filer les pages et que vous d\u00e9clenchez des animations :<\/p>\n<figure style=\"width: 750px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\" alt=\"Moniteur de performance en temps r\u00e9el de Chrome DevTools\" width=\"750\" height=\"312\"><\/a><figcaption class=\"wp-caption-text\">Moniteur de performance en temps r\u00e9el de Chrome DevTools<\/figcaption><\/figure>\n<p>Les mesures suivantes sont particuli\u00e8rement int\u00e9ressantes pour optimiser les performances de CSS (plus elles sont faibles, mieux c&rsquo;est) :<\/p>\n<ul>\n<li><strong>Utilisation du processeur : <\/strong>Utilisation du processeur de 0% \u00e0 100%.<\/li>\n<li><strong>Mises en page\/sec : <\/strong>La vitesse \u00e0 laquelle le navigateur doit remettre la page en page.<\/li>\n<li><strong>Recalculs de style\/sec : <\/strong>La vitesse \u00e0 laquelle le navigateur doit recalculer les styles.<\/li>\n<\/ul>\n<p>Les autres mesures peuvent aussi \u00eatre utiles si CSS a des difficult\u00e9s en raison de facteurs externes (l\u00e0 encore, des valeurs plus faibles indiquent de meilleures performances) :<\/p>\n<ul>\n<li><strong>Taille du tas JS : <\/strong>La m\u00e9moire totale utilis\u00e9e par les objets JavaScript.<\/li>\n<li><strong>N\u0153uds DOM : <\/strong>Le nombre d&rsquo;\u00e9l\u00e9ments dans le document <a href=\"https:\/\/kinsta.com\/fr\/blog\/meilleures-pratiques-html\/\">HTML<\/a>.<\/li>\n<li><strong>\u00c9couteurs d&rsquo;\u00e9v\u00e9nements JS : <\/strong>Le nombre d&rsquo;auditeurs d&rsquo;\u00e9v\u00e9nements JavaScript enregistr\u00e9s.<\/li>\n<li><strong>Documents : <\/strong>Le nombre de ressources, y compris la page, les fichiers CSS, les modules JavaScript, etc.<\/li>\n<li><strong>Cadres du document : <\/strong>Le nombre de frames, d&rsquo;iframes et de scripts de travail JavaScript.<\/li>\n<\/ul>\n<h3>7. Rapport de performance DevTools<\/h3>\n<p>Le panneau <strong>Performance<\/strong> de DevTools vous permet d&rsquo;enregistrer les activit\u00e9s de la page pour une analyse plus approfondie et pour vous aider \u00e0 identifier les probl\u00e8mes de performance. Les rapports g\u00e9n\u00e9r\u00e9s sont complexes, et de nombreux d\u00e9veloppeurs les \u00e9vitent, mais ils fournissent des informations pr\u00e9cieuses.<\/p>\n<p>L&rsquo;ic\u00f4ne des r\u00e9glages du panneau Performance vous permet de d\u00e9finir diverses options, comme le ralentissement du r\u00e9seau et du processeur. Vous pouvez aussi d\u00e9sactiver les \u00e9chantillons JavaScript pour que les piles d&rsquo;appels d\u00e9taill\u00e9es ne soient pas enregistr\u00e9es.<\/p>\n<p>Pour commencer, cliquez sur l&rsquo;ic\u00f4ne circulaire <strong>Enregistrer<\/strong>, chargez et\/ou utilisez votre page, puis cliquez sur le bouton <strong>Arr\u00eater<\/strong> pour afficher le rapport :<\/p>\n<figure style=\"width: 673px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\" alt=\"Rapport de performance DevTools.\" width=\"673\" height=\"848\"><\/a><figcaption class=\"wp-caption-text\">Rapport de performance DevTools.<\/figcaption><\/figure>\n<p>Presque toutes ces mesures seront utiles aux d\u00e9veloppeurs JavaScript, mais les probl\u00e8mes d&rsquo;optimisation CSS peuvent \u00eatre particuli\u00e8rement \u00e9vidents \u00e0 partir de :<\/p>\n<ul>\n<li><strong>Barre rouge sup\u00e9rieure : <\/strong>Cela indique que le taux de frame a consid\u00e9rablement baiss\u00e9, ce qui peut causer des probl\u00e8mes de performance. Cela est normal au d\u00e9but du chargement d&rsquo;une page, mais des animations CSS excessives peuvent aussi \u00eatre un probl\u00e8me.<\/li>\n<li><strong>Tableau r\u00e9capitulatif : <\/strong>Des mesures \u00e9lev\u00e9es de chargement, de rendu et de peinture peuvent indiquer des probl\u00e8mes de CSS.<\/li>\n<\/ul>\n<h2>Corrections indirectes des performances CSS<\/h2>\n<p>Les corrections suivantes ne r\u00e9soudront pas directement les probl\u00e8mes CSS, mais elles peuvent vous aider \u00e0 r\u00e9soudre certains probl\u00e8mes de performance avec relativement peu d&rsquo;efforts.<\/p>\n<h3>Utilisez un bon h\u00e9bergeur<\/h3>\n<p>L&rsquo;utilisation d&rsquo;un bon h\u00e9bergeur avec des serveurs physiquement plus proches de vos utilisateurs apportera des avantages imm\u00e9diats en termes de performances. Les plans d&rsquo;h\u00e9bergement varient, mais il existe trois types principaux :<\/p>\n<ol>\n<li><strong>H\u00e9bergement partag\u00e9 : <\/strong>Votre site web est h\u00e9berg\u00e9 sur un serveur physique, peut-\u00eatre aux c\u00f4t\u00e9s de centaines d&rsquo;autres sites. L&rsquo;espace disque, la RAM, le temps CPU et la bande passante sont partag\u00e9s. Les plans sont souvent bon march\u00e9, mais les performances et la disponibilit\u00e9 sont affect\u00e9es par les autres sites. Une mise \u00e0 niveau est possible, mais votre site restera g\u00e9n\u00e9ralement sur la m\u00eame infrastructure.<\/li>\n<li><strong>H\u00e9bergement d\u00e9di\u00e9 : <\/strong>Votre site est h\u00e9berg\u00e9 sur un ou plusieurs serveurs physiques qui\u00a0 vous appartiennent. Le mat\u00e9riel peut \u00eatre configur\u00e9 et mis \u00e0 niveau en fonction des besoins. Les plans sont souvent chers, et les pannes de mat\u00e9riel restent probl\u00e9matiques.<\/li>\n<li><strong>H\u00e9bergement cloud : <\/strong><a href=\"https:\/\/kinsta.com\/fr\/blog\/plateforme-cloud-pour-developpeurs\/\">L&rsquo;h\u00e9bergement cloud<\/a> abstrait l&rsquo;infrastructure mat\u00e9rielle en un ensemble de services auxquels on peut acc\u00e9der \u00e0 la demande. Votre site pourrait \u00eatre provisionn\u00e9 sur toute une gamme d&rsquo;appareils pour faciliter les mises \u00e0 niveau.<\/li>\n<\/ol>\n<p>Les plans d&rsquo;h\u00e9bergement cloud et les prix varient \u00e9norm\u00e9ment. Vous pouvez envisager :<\/p>\n<ol>\n<li>Options de <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-paas\/\">plateforme en tant que service (PaaS)<\/a>, comme les serveurs web et les bases de donn\u00e9es virtuelles, ou<\/li>\n<li>Les options <a href=\"https:\/\/kinsta.com\/fr\/blog\/produits-saas\/\">Software as a Service (SaaS)<\/a>, qui offrent des <a href=\"https:\/\/kinsta.com\/fr\/\">applications enti\u00e8rement infog\u00e9r\u00e9es comme WordPress<\/a>.<\/li>\n<\/ol>\n<p>Changer d&rsquo;h\u00e9bergeur peut am\u00e9liorer les performances. Il est peu probable que cela r\u00e9solve tous vos probl\u00e8mes, mais c&rsquo;est une solution rentable aux probl\u00e8mes de backend et de bande passante.<\/p>\n<p>Vous pouvez aussi envisager d&rsquo;utiliser un <a href=\"https:\/\/kinsta.com\/fr\/blog\/cdn-wordpress\/\">r\u00e9seau de diffusion de contenu (CDN)<\/a> ou un CDN sp\u00e9cialis\u00e9 dans les images et les vid\u00e9os qui peut r\u00e9partir la charge sur plusieurs sites g\u00e9ographiquement plus proches des utilisateurs.<\/p>\n<h3>Exploitez les fonctions d&rsquo;efficacit\u00e9 des navigateurs et des serveurs<\/h3>\n<p>Environ 10 % des sites n&rsquo;activent pas la compression gzip (ou mieux), qui est g\u00e9n\u00e9ralement l&rsquo;option par d\u00e9faut du serveur. Cela r\u00e9duit la taille des CSS de 60 % ou plus en compressant les fichiers avant leur transmission. Cela ne r\u00e9parera pas les CSS inefficaces, mais le code arrivera plus vite !<\/p>\n<p>Vous devriez aussi <a href=\"https:\/\/kinsta.com\/fr\/apprendre\/http2\/\">activer HTTP\/2<\/a> (ou mieux), qui envoie les donn\u00e9es dans un format binaire plus petit, compresse les en-t\u00eates et peut envoyer plus d&rsquo;un fichier sur la m\u00eame connexion TCP.<\/p>\n<p>Enfin, assurez-vous que le navigateur peut mettre en cache les CSS et autres fichiers de mani\u00e8re efficace. Il s&rsquo;agit g\u00e9n\u00e9ralement de d\u00e9finir les <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.21\" target=\"_blank\" rel=\"noopener noreferrer\">Expires<\/a>, <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.29\" target=\"_blank\" rel=\"noopener noreferrer\">Last-Modified<\/a> et\/ou <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_ETag\" target=\"_blank\" rel=\"noopener noreferrer\">ETag hashes<\/a> dans l&rsquo;en-t\u00eate HTTP.<\/p>\n<h3>Optimisez votre CMS<\/h3>\n<p>Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/logiciel-cms\/\">syst\u00e8mes de gestion de contenu<\/a> tels que WordPress peuvent \u00eatre \u00e9tendus avec des th\u00e8mes et des extensions qui servent leurs propres CSS. Dans la mesure du possible, vous devriez <a href=\"https:\/\/kinsta.com\/fr\/ebooks\/wordpress\/accelerer-site-wordpress\/\">acc\u00e9l\u00e9rer votre CMS<\/a> pour :<\/p>\n<ol>\n<li>Supprimer les extensions inutilis\u00e9es.<\/li>\n<li>Utiliser des th\u00e8mes plus l\u00e9gers<\/li>\n<li>Activer la <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-le-cache\/\" target=\"_blank\" rel=\"noopener noreferrer\">mise en cache<\/a> pour \u00e9viter la r\u00e9g\u00e9n\u00e9ration excessive des pages.<\/li>\n<\/ol>\n<h3>Optimisez vos images<\/h3>\n<p>Les images n&rsquo;ont pas la m\u00eame surcharge de traitement et de rendu que le HTML, le CSS et le JavaScript, mais elles repr\u00e9sentent une grande partie du poids des pages et de la bande passante utilisable. Prennez en compte :<\/p>\n<ol>\n<li>Supprimer les images inutiles.<\/li>\n<li>Redimensionner les grandes images &#8211; peut-\u00eatre \u00e0 150% maximum de la taille maximale qu&rsquo;elles peuvent afficher \u00e0 l&rsquo;\u00e9cran.<\/li>\n<li>Utiliser un <a href=\"https:\/\/kinsta.com\/fr\/blog\/types-fichier-image\/\">format d&rsquo;image appropri\u00e9<\/a> &#8211; id\u00e9alement une option hautement compress\u00e9e comme <a href=\"https:\/\/kinsta.com\/fr\/blog\/webp\/\">WebP<\/a> ou AVIF, mais \u00e9ventuellement <a href=\"https:\/\/kinsta.com\/fr\/blog\/svg-wordpress\/\">SVG<\/a> pour les logos et les graphiques.<\/li>\n<li>Remplacer les images par des d\u00e9grad\u00e9s CSS ou d&rsquo;autres effets.<\/li>\n<li>Ajouter des attributs de largeur et de hauteur aux balises HTML <code>&lt;img&gt;<\/code> ou utiliser la nouvelle <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/aspect-ratio\" target=\"_blank\" rel=\"noopener noreferrer\">propri\u00e9t\u00e9 CSS aspect-ratio<\/a> pour s&rsquo;assurer qu&rsquo;un espace appropri\u00e9 est r\u00e9serv\u00e9 sur la page avant le t\u00e9l\u00e9chargement de l&rsquo;image.<\/li>\n<\/ol>\n<p>Un CDN sp\u00e9cialis\u00e9 dans les images peut g\u00e9rer une partie de ce travail pour vous. Pour plus de conseils, consultez notre guide sur la fa\u00e7on d&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/optimiser-les-images-pour-le-web\/\">optimiser les images pour le web<\/a>.<\/p>\n<h3>Supprimez les CSS inutilis\u00e9s<\/h3>\n<p>Les styles les plus rapides sont ceux que vous n&rsquo;avez jamais besoin de charger ou de rendre ! Essayez de <a href=\"https:\/\/kinsta.com\/fr\/blog\/css-wordpress\/\">supprimer\/modifier tout code CSS<\/a> dont vous n&rsquo;avez plus besoin, comme celui des anciennes pages, des widgets ou des frameworks. Cela peut \u00eatre difficile sur des sites plus grands, et il n&rsquo;est pas toujours \u00e9vident de savoir si un ensemble de styles particulier est essentiel ou non.<\/p>\n<p>Les outils suivants analysent l&rsquo;utilisation de HTML et CSS au moment de la construction ou en parcourant les URL pour identifier le code redondant. Cela n&rsquo;est pas toujours suffisant, c&rsquo;est pourquoi des configurations suppl\u00e9mentaires peuvent \u00eatre d\u00e9finies pour s&rsquo;assurer que les styles d\u00e9clench\u00e9s par JavaScript et les interactions des utilisateurs sont autoris\u00e9s \u00e0 \u00eatre list\u00e9s :<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/uncss\/uncss\" target=\"_blank\" rel=\"noopener noreferrer\">UnCSS<\/a><\/li>\n<li><a href=\"https:\/\/unused-css.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">UnusedCSS<\/a><\/li>\n<li><a href=\"https:\/\/purgecss.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">PurgeCSS<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/purifycss\/purifycss\" target=\"_blank\" rel=\"noopener noreferrer\">PurifyCSS<\/a><\/li>\n<\/ul>\n<p>Il existe une meilleure option : Divisez le CSS en fichiers s\u00e9par\u00e9s avec des niveaux de responsabilit\u00e9 clairs et documentez en cons\u00e9quence. La suppression des styles inutiles devient alors consid\u00e9rablement plus facile.<\/p>\n<h2>Optimiser les performances de chargement du CSS<\/h2>\n<p>Les CSS ne sont pas tous charg\u00e9s de la m\u00eame fa\u00e7on. L&rsquo;humble balise<code> &lt;link&gt;<\/code> poss\u00e8de un certain nombre d&rsquo;options et de bizarreries qui ne sont pas toujours logiques.<\/p>\n<h3>Optimisez l&rsquo;utilisation des polices web<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/meilleures-polices-google-fonts\/\">Google Fonts<\/a> et d&rsquo;autres polices similaires ont r\u00e9volutionn\u00e9 les <a href=\"https:\/\/kinsta.com\/fr\/blog\/polices-html\/\">polices web<\/a>, mais quelques lignes de code de police peuvent entra\u00eener des centaines de kilo-octets de bande passante.<\/p>\n<p>Voici nos suggestions d&rsquo;optimisation :<\/p>\n<ol>\n<li><strong>Ne chargez que les polices dont vous avez besoin : <\/strong>Supprimez les polices que vous n&rsquo;utilisez pas et v\u00e9rifiez si de nouvelles polices sont n\u00e9cessaires.<\/li>\n<li><strong>Ne chargez que les poids et les styles dont vous avez besoin : <\/strong>La plupart des polices peuvent limiter le t\u00e9l\u00e9chargement \u00e0 certains jeux de caract\u00e8res (comme le latin uniquement), poids (\u00e9paisseurs) et italiques (inclinaisons). Les navigateurs peuvent rendre automatiquement les styles manquants, mais les r\u00e9sultats peuvent \u00eatre m\u00e9diocres.<\/li>\n<li><strong>Limitez les caract\u00e8res n\u00e9cessaires :<\/strong> Les polices <strong>peu utilis\u00e9es<\/strong> peuvent \u00eatre limit\u00e9es \u00e0 des caract\u00e8res sp\u00e9cifiques. Par exemple, le titre \u00ab Tutoriel CSS \u00bb en Open Sans peut \u00eatre d\u00e9fini en ajoutant un param\u00e8tre <code>&text=<\/code> \u00e0 la cha\u00eene de requ\u00eate de Google fonts : <code>fonts.googleapis.com\/css?family=Open+Sans&text=CStuorial<\/code><\/li>\n<li><strong>Consid\u00e9rez les polices variables : <\/strong>Les polices variables d\u00e9finissent une grande vari\u00e9t\u00e9 de styles, de poids et d&rsquo;italiques en utilisant l&rsquo;interpolation vectorielle. Le fichier de police est un peu plus gros, mais vous n&rsquo;en avez besoin que d&rsquo;un seul au lieu de plusieurs. La <a href=\"https:\/\/www.recursive.design\/\" target=\"_blank\" rel=\"noopener noreferrer\">police r\u00e9cursive<\/a> d\u00e9montre la flexibilit\u00e9 des polices variables.<\/li>\n<li><strong>Chargez les polices \u00e0 partir de votre serveur local : <\/strong><a href=\"https:\/\/kinsta.com\/fr\/blog\/polices-local\/\">L&rsquo;auto-h\u00e9bergement des polices<\/a> est plus efficace que l&rsquo;utilisation d&rsquo;une fonderie. Moins de consultations DNS sont n\u00e9cessaires et vous pouvez limiter le t\u00e9l\u00e9chargement \u00e0 <a href=\"https:\/\/caniuse.com\/woff2\" target=\"_blank\" rel=\"noopener noreferrer\">WOFF2, que tous les navigateurs modernes prennent en charge<\/a>. Les navigateurs plus anciens (je te regarde, IE) peuvent se rabattre sur une police OS.<\/li>\n<li><strong>Consid\u00e9rez les polices OS : <\/strong>Cette police web de 500 Ko est peut-\u00eatre superbe, mais quelqu&rsquo;un le remarquerait-il si vous passiez aux polices courantes Helvetica, Arial, Georgia ou Verdana ? Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/polices-caracteres-web-safe\/\">polices OS ou web-safe<\/a> sont un moyen facile d&rsquo;am\u00e9liorer les performances.<\/li>\n<\/ol>\n<h3>Utilisez une option de chargement de police appropri\u00e9e<\/h3>\n<p>Les polices web peuvent prendre quelques secondes \u00e0 t\u00e9l\u00e9charger et \u00e0 traiter. Le navigateur va soit :<\/p>\n<ol>\n<li><strong>Montrer un flash de texte non stylis\u00e9 (FOUT) : <\/strong>La premi\u00e8re police de secours disponible est utilis\u00e9e initialement mais est remplac\u00e9e d\u00e8s que la police web est pr\u00eate.<\/li>\n<li><strong>Afficher un flash de texte invisible (FOIT) : <\/strong>Aucun texte n&rsquo;est affich\u00e9 jusqu&rsquo;\u00e0 ce que la police web soit pr\u00eate. C&rsquo;est le processus par d\u00e9faut des navigateurs modernes, qui attendent g\u00e9n\u00e9ralement trois secondes avant de revenir \u00e0 une police de secours.<\/li>\n<\/ol>\n<p>Aucun des deux n&rsquo;est id\u00e9al. La propri\u00e9t\u00e9 CSS <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@font-face\/font-display\" target=\"_blank\" rel=\"noopener noreferrer\">font-display<\/a> et le param\u00e8tre Google Font &#038; display = peuvent s\u00e9lectionner une autre option :<\/p>\n<ul>\n<li><strong>auto :<\/strong> Le comportement par d\u00e9faut du navigateur (g\u00e9n\u00e9ralement FOIT).<\/li>\n<li><strong>block :<\/strong> Effectivement FOIT. Le texte est invisible pendant trois secondes au maximum. Il n&rsquo;y a pas de changement de police, mais le texte peut mettre du temps \u00e0 appara\u00eetre.<\/li>\n<li><strong>swap :<\/strong> Effectivement FOUT. La premi\u00e8re solution de repli est utilis\u00e9e jusqu&rsquo;\u00e0 ce que la police web soit disponible. Le texte est imm\u00e9diatement lisible, mais l&rsquo;effet de changement de police peut \u00eatre g\u00eanant. <a href=\"https:\/\/meowni.ca\/font-style-matcher\/\" target=\"_blank\" rel=\"noopener noreferrer\">Font Style Matcher<\/a> peut \u00eatre utilis\u00e9 pour d\u00e9finir un fallback de taille similaire.<\/li>\n<li><strong>fallback :<\/strong> Un compromis entre FOIT et FOUT. Le texte est invisible pendant une courte p\u00e9riode (g\u00e9n\u00e9ralement 100 ms), puis la premi\u00e8re solution de repli est utilis\u00e9e jusqu&rsquo;\u00e0 ce que la police web soit disponible.<\/li>\n<li><strong>facultatif :<\/strong> Similaire \u00e0 fallback, sauf qu&rsquo;il n&rsquo;y a pas de permutation de police. La police web ne sera utilis\u00e9e que si elle est disponible pendant la p\u00e9riode initiale. La premi\u00e8re page affichera probablement une police de secours, les pages suivantes utilisant la police web t\u00e9l\u00e9charg\u00e9e et mise en cache.<\/li>\n<\/ul>\n<p>L&rsquo;utilisation de swap, fallback ou optional peut offrir un gain de performance per\u00e7u.<\/p>\n<h3>\u00c9vitez @import CSS<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@import\">L&rsquo;at-rule @import<\/a> permet aux fichiers CSS d&rsquo;\u00eatre inclus dans d&rsquo;autres :<\/p>\n<pre><code class=\"language-css\">\/* main.css *\/\n@import url(\"reset.css\") ;\n@import url(\"grid.css\") ;\n@import url(\"widget.css\") ;<\/code><\/pre>\n<p>Cela semble \u00eatre un moyen efficace de charger des composants et des polices plus petits. Malheureusement, chaque @import bloque le rendu, et chaque fichier doit \u00eatre charg\u00e9 et analys\u00e9 en s\u00e9rie.<\/p>\n<p>Les multiples balises <code>&lt;link&gt;<\/code> au sein du HTML sont plus efficaces et chargent les fichiers CSS en parall\u00e8le :<\/p>\n<pre><code class=\"language-html\">&lt;link rel=\"stylesheet\" href=\"reset.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"grid.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"widget.css\"&gt;<\/code><\/pre>\n<p>Cela dit, il est pr\u00e9f\u00e9rable de&#8230;<\/p>\n<h3>Concat\u00e9ner et minimiser les CSS<\/h3>\n<p>Les outils de construction modernes, les pr\u00e9processeurs CSS tels que Sass et les <a href=\"https:\/\/kinsta.com\/fr\/blog\/combine-external-css\/\">extensions WordPress peuvent combiner tous les partiels en un seul grand fichier CSS<\/a>. Les espaces blancs, commentaires et caract\u00e8res inutiles sont ensuite supprim\u00e9s pour r\u00e9duire la taille du fichier au minimum.<\/p>\n<p>Les fichiers multiples sont moins un probl\u00e8me de performance avec HTTP\/2 <a href=\"https:\/\/kinsta.com\/fr\/blog\/http3\/\">et plus<\/a>, mais un fichier unique ne n\u00e9cessite qu&rsquo;un seul en-t\u00eate et peut \u00eatre gzipp\u00e9 et mis en cache plus efficacement.<\/p>\n<p>Les fichiers CSS s\u00e9par\u00e9s ne sont pratiques que si vous avez une ou plusieurs feuilles de style qui sont modifi\u00e9es fr\u00e9quemment &#8211; peut-\u00eatre plusieurs fois par semaine. M\u00eame dans ce cas, le code CSS principalement statique peut \u00eatre combin\u00e9 dans un seul fichier.<\/p>\n<p>Les <a href=\"https:\/\/kinsta.com\/fr\/tarifs\/?plan=visits-business1\">clients de Kinsta<\/a> peuvent acc\u00e9der \u00e0 la <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/cdn-wordpress\/kinsta-cdn\/#kinstas-cdn#code-minification-1\">fonction de modification du code<\/a> dans leur <a href=\"https:\/\/kinsta.com\/fr\/mykinsta\/\">tableau de bord MyKinsta<\/a> pour les y aider. Cette fonction permet aux clients d&rsquo;activer la minification automatique de CSS et JavaScript d&rsquo;un simple clic. Cela permet d&rsquo;acc\u00e9l\u00e9rer un site sans aucun effort manuel.<\/p>\n<h3>\u00c9vitez l&rsquo;encodage en base64<\/h3>\n<p><a href=\"https:\/\/jpillora.com\/base64-encoder\/\" target=\"_blank\" rel=\"noopener noreferrer\">Les outils peuvent encoder les images en cha\u00eenes base64<\/a>, que vous pouvez utiliser comme URI de donn\u00e9es dans les balises HTML <code>&lt;img&gt;<\/code> et les arri\u00e8re-plans CSS :<\/p>\n<pre><code class=\"language-css\">.background {\n  background-image : url('data:image\/jpg;base64,ABC123...') ;\n}<\/code><\/pre>\n<p>Cela r\u00e9duit le nombre de requ\u00eates HTTP, mais cela nuit aux performances de CSS :<\/p>\n<ul>\n<li>les cha\u00eenes base64 peuvent \u00eatre 30 % plus grandes que leur \u00e9quivalent binaire.<\/li>\n<li>les navigateurs doivent d\u00e9coder la cha\u00eene avant qu&rsquo;une image puisse \u00eatre utilis\u00e9e, et<\/li>\n<li>la modification d&rsquo;un pixel d&rsquo;image invalide l&rsquo;ensemble du fichier CSS.<\/li>\n<\/ul>\n<p>N&rsquo;envisagez l&rsquo;encodage base64 que si vous utilisez de tr\u00e8s petites images qui changent peu souvent et pour lesquelles la cha\u00eene r\u00e9sultante n&rsquo;est pas beaucoup plus longue qu&rsquo;une URL.<\/p>\n<p>Cela dit, vous pouvez encoder en UTF8 les ic\u00f4nes SVG r\u00e9utilisables, par exemple.<\/p>\n<pre><code class=\"language-css\">.svgbackground {\n  background-image : url('data:image\/svg+xml;utf8,') ;\n}<\/code><\/pre>\n<h3>Supprimez les hacks CSS et les Fallbacks d&rsquo;IE<\/h3>\n<p>\u00c0 moins que vous n&rsquo;ayez la malchance d&rsquo;avoir une forte proportion d&rsquo;utilisateurs d&rsquo;Internet Explorer, les feuilles de style conditionnelles et les hacks d&rsquo;IE peuvent \u00eatre supprim\u00e9s de votre CSS. Dans la plupart des cas, les utilisateurs d&rsquo;IE verront quand m\u00eame <em>quelque chose<\/em>, surtout si vous utilisez un design mobile-first qui affiche une vue lin\u00e9aire plus simple par d\u00e9faut. Le r\u00e9sultat ne sera peut-\u00eatre pas joli, et il ne sera pas parfait au pixel pr\u00e8s, mais votre budget de d\u00e9veloppement est mieux d\u00e9pens\u00e9 en tenant compte de l&rsquo;accessibilit\u00e9 pour tous les utilisateurs.<\/p>\n<h3>Pr\u00e9chargez les fichiers CSS<\/h3>\n<p>La balise <code>&lt;link&gt;<\/code>fournit un <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTML\/Preloading_content\" target=\"_blank\" rel=\"noopener noreferrer\">attribut de pr\u00e9chargement<\/a> facultatif qui peut d\u00e9marrer un t\u00e9l\u00e9chargement imm\u00e9diatement plut\u00f4t que d&rsquo;attendre la r\u00e9f\u00e9rence r\u00e9elle dans le HTML :<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;title&gt;My page&lt;\/title&gt;\n  &lt;!-- preload styles --&gt;\n  &lt;link rel=\"preload\" href=\"\/css\/main.css\" as=\"style\" \/&gt;\n  &lt;!-- lots more code --&gt;\n  &lt;!-- load preloaded styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\" \/&gt;<\/code><\/pre>\n<p>Cela est particuli\u00e8rement b\u00e9n\u00e9fique dans WordPress et d&rsquo;autres CMS&rsquo; o\u00f9 une extension qui pourrait ajouter une feuille de style plus bas dans la page.<\/p>\n<h3>Utilisez le CSS en ligne critique<\/h3>\n<p>Les outils d&rsquo;analyse peuvent vous sugg\u00e9rer \u00ab d&rsquo;utiliser les CSS critiques en ligne \u00bb ou de \u00ab r\u00e9duire les feuilles de style qui bloquent le rendu\u00bb Cela am\u00e9liore les performances en :<\/p>\n<ol>\n<li>Identifiant les styles essentiels utilis\u00e9s par les \u00e9l\u00e9ments au-dessus du pli (ceux qui sont visibles lorsque la page se charge)<\/li>\n<li>Ins\u00e9rant ce CSS essentiel dans une balise <code>&lt;style&gt;<\/code> dans votre <code>&lt;head&gt;<\/code><\/li>\n<li>Chargeant le reste du CSS de mani\u00e8re asynchrone pour \u00e9viter le blocage du rendu. Pour cela, chargez la feuille de style dans un style \u00ab print \u00bb auquel le navigateur accorde une priorit\u00e9 moindre. JavaScript la fait ensuite passer \u00e0 un style de m\u00e9dia \u00ab all \u00bb une fois que la page est charg\u00e9e (une <code>&lt;noscript&gt;<\/code> garantit que le CSS fonctionne si JavaScript n&rsquo;est pas disponible) :<\/li>\n<\/ol>\n<pre><code class=\"language-html\">&lt;style&gt;\n\/* critical styles *\/\nbody { font-family: sans-serif; color: #111; }\n&lt;\/style&gt;\n&lt;!-- load remaining styles --&gt;\n&lt;link rel=\"stylesheet\" \n     href=\"\/css\/main.css\"\n    media=\"print\" \n   onload=\"this.media='all'\"&gt;\n&lt;noscript&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\"&gt;\n&lt;\/noscript&gt;<\/code><\/pre>\n<p>Des outils tels que <a href=\"https:\/\/github.com\/addyosmani\/critical\">critical<\/a> et <a href=\"https:\/\/github.com\/filamentgroup\/criticalCSS\">criticalCSS<\/a> peuvent aider \u00e0 extraire les styles des \u00e9l\u00e9ments en vue.<\/p>\n<p>Cette technique permet d&rsquo;am\u00e9liorer sensiblement les performances et d&rsquo;augmenter les r\u00e9sultats des audits. Les sites ou les applications dot\u00e9s d&rsquo;interfaces coh\u00e9rentes devraient \u00eatre plus simples \u00e0 mettre en \u0153uvre, mais cela peut \u00eatre plus difficile ailleurs :<\/p>\n<ul>\n<li>Un outil de construction est essentiel pour tous les sites, sauf les plus simples.<\/li>\n<li>Le \u00ab pli \u00bb est diff\u00e9rent sur chaque appareil.<\/li>\n<li>Les sites peuvent avoir une vari\u00e9t\u00e9 de mises en page n\u00e9cessitant diff\u00e9rentes CSS critiques.<\/li>\n<li>Les outils CSS critiques peuvent avoir des difficult\u00e9s avec des frameworks sp\u00e9cifiques, le HTML g\u00e9n\u00e9r\u00e9 c\u00f4t\u00e9 client et le contenu dynamique.<\/li>\n<li>La technique profite surtout au chargement de la premi\u00e8re page. Les feuilles de style CSS sont mises en cache pour les pages suivantes, de sorte que l&rsquo;ajout de styles en ligne augmente le poids de la page.<\/li>\n<\/ul>\n<h3>Utilisez le rendu Media Query<\/h3>\n<p>Une seule concat\u00e9nation et minification profitera \u00e0 la plupart des sites, mais les sites qui n\u00e9cessitent une quantit\u00e9 importante de styles pour grand \u00e9cran pourraient diviser les fichiers CSS et les charger \u00e0 l&rsquo;aide d&rsquo;une media query :<\/p>\n<pre><code class=\"language-html\">&lt;!-- core styles loaded on all devices --&gt;\n&lt;link rel=\"stylesheet\" href=\"core.css\"&gt;\n&lt;!-- served to screens at least 40em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 40em)\" href=\"40em.css\"&gt;\n&lt;!-- served to screens at least 80em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 80em)\" href=\"80em.css\"&gt;<\/code><\/pre>\n<p>Cet exemple suppose une m\u00e9thodologie mobile-first. Les appareils mobiles chargent <strong>core.css<\/strong> mais n&rsquo;ont peut-\u00eatre pas besoin de t\u00e9l\u00e9charger ou d&rsquo;analyser les autres feuilles de style.<\/p>\n<h3>Utilisez le rendu progressif<\/h3>\n<p>Le rendu progressif est une technique qui d\u00e9finit des feuilles de style individuelles pour des pages ou des composants distincts. Elle peut profiter \u00e0 de tr\u00e8s grands sites o\u00f9 les pages individuelles sont construites \u00e0 partir d&rsquo;un large \u00e9ventail de composants.<\/p>\n<p>Chaque fichier CSS est charg\u00e9 imm\u00e9diatement avant qu&rsquo;un composant soit r\u00e9f\u00e9renc\u00e9 dans le HTML :<\/p>\n<pre><code class=\"language-html\">&lt;head&gt;\n  &lt;!-- core styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"core.css\" \/&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;!-- header --&gt;\n  &lt;link rel=\"stylesheet\" href=\"header.css\" \/&gt;\n  &lt;header&gt;...&lt;\/header&gt;\n  &lt;!-- primary content --&gt;\n  &lt;link rel=\"stylesheet\" href=\"main.css\" \/&gt;\n  &lt;main&gt;\n    &lt;!-- widget styling --&gt;\n    &lt;link rel=\"stylesheet\" href=\"widget.css\" \/&gt;\n    &lt;div class=\"mywidget&gt;...&lt;\/div&gt;\n  &lt;\/main&gt;\n  &lt;!-- footer --&gt;\n  &lt;link rel=\"stylesheet\" href=\"footer.css\" \/&gt;\n  &lt;footer&gt;...&lt;\/footer&gt;\n&lt;\/body&gt;<\/code><\/pre>\n<p>Cela fonctionne bien dans la plupart des navigateurs. (Safari affiche une page blanche jusqu&rsquo;\u00e0 ce que tout le CSS soit charg\u00e9, mais cela ne devrait pas \u00eatre sensiblement pire qu&rsquo;une seule grande feuille de style)<\/p>\n<p>L&rsquo;adoption des composants web encourage \u00e9galement l&rsquo;utilisation de styles scop\u00e9s qui sont charg\u00e9s lorsque l&rsquo;\u00e9l\u00e9ment personnalis\u00e9 est rendu.<\/p>\n<h2>Optimiser les performances CSS<\/h2>\n<p>Les techniques et propri\u00e9t\u00e9s CSS exercent diff\u00e9rentes pressions sur le navigateur, le processeur, la m\u00e9moire, la bande passante et d&rsquo;autres ressources. Les conseils suivants peuvent vous aider \u00e0 \u00e9viter les traitements inutiles et les performances l\u00e9thargiques.<\/p>\n<h3>Adoptez des techniques de mise en page modernes (Grid et Flexbox)<\/h3>\n<p>Les mises en page bas\u00e9es sur \u00ab float \u00bb sont difficiles \u00e0 cr\u00e9er, utilisent de nombreuses propri\u00e9t\u00e9s, n\u00e9cessitent des ajustements continuels de la marge et de la marge int\u00e9rieure, doivent \u00eatre g\u00e9r\u00e9es \u00e0 l&rsquo;aide de media queries et entra\u00eenent un traitement consid\u00e9rable du navigateur. Elles ont \u00e9t\u00e9 la seule m\u00e9thode de mise en page viable pendant de nombreuses ann\u00e9es, mais ne sont plus n\u00e9cessaires. Utilisez l&rsquo;une ou l&rsquo;autre :<\/p>\n<ul>\n<li><a href=\"https:\/\/kinsta.com\/fr\/blog\/design-web-responsive\/#flexbox-layout\" target=\"_blank\" rel=\"noopener noreferrer\">CSS Flexbox<\/a> pour les mises en page unidimensionnelles qui pourraient s&rsquo;enrouler sur la ligne suivante. C&rsquo;est id\u00e9al pour les menus, les galeries d&rsquo;images, les cartes, etc.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/fr\/blog\/design-web-responsive\/#size-layout-elements-with-percentages-or-create-a-css-grid-layout\" target=\"_blank\" rel=\"noopener noreferrer\">CSS Grid<\/a> pour les mises en page bidimensionnelles avec des lignes et des colonnes explicites. C&rsquo;est id\u00e9al pour les mises en page.<\/li>\n<\/ul>\n<p>Les deux sont plus simples \u00e0 d\u00e9velopper, utilisent moins de code, offrent un rendu plus rapide et s&rsquo;adaptent \u00e0 toutes les tailles d&rsquo;\u00e9cran sans media queries.<\/p>\n<p>Les tr\u00e8s vieux navigateurs ne reconna\u00eetront pas les propri\u00e9t\u00e9s modernes de flexbox et de grille, donc chaque \u00e9l\u00e9ment devient un bloc. Affichez-les dans une mise en page lin\u00e9aire simple de type mobile : il <em>n&rsquo;est pas n\u00e9cessaire d&rsquo;\u00e9muler le design avec des fallbacks bas\u00e9s sur float<\/em>.<\/p>\n<h3>Remplacez les images par des d\u00e9grad\u00e9s et des effets CSS<\/h3>\n<p>Dans la mesure du possible, optez pour le code CSS plut\u00f4t que pour les images. Exp\u00e9rimentez les d\u00e9grad\u00e9s, les bordures, les rayons, les ombres, les filtres, les modes de fusion, les masques, le d\u00e9tourage et les effets de pseudo-\u00e9l\u00e9ments pour r\u00e9utiliser ou remplacer les images existantes.<\/p>\n<p>Les effets CSS utilisent beaucoup moins de bande passante, sont plus faciles \u00e0 modifier et peuvent g\u00e9n\u00e9ralement \u00eatre anim\u00e9s.<\/p>\n<h3>\u00c9vitez de trop utiliser les propri\u00e9t\u00e9s co\u00fbteuses<\/h3>\n<p>Vous avez peut-\u00eatre un code d\u00e9claratif laconique, mais certaines CSS n\u00e9cessitent plus de traitement que d&rsquo;autres. Les propri\u00e9t\u00e9s suivantes d\u00e9clenchent des calculs de peinture qui peuvent \u00eatre co\u00fbteux lorsqu&rsquo;ils sont utilis\u00e9s en exc\u00e8s :<\/p>\n<ul>\n<li><code>position : fixed<\/code><\/li>\n<li><code>border-radius<\/code><\/li>\n<li><code>box-shadow<\/code><\/li>\n<li><code>text-shadow<\/code><\/li>\n<li><code>opacity<\/code><\/li>\n<li><code>transform<\/code><\/li>\n<li><code>filter<\/code><\/li>\n<li><code>backdrop-filter<\/code><\/li>\n<li><code>background-blend-mode<\/code><\/li>\n<\/ul>\n<h3>Utilisez les transitions et les animations CSS lorsque c&rsquo;est possible<\/h3>\n<p>Les transitions et animations CSS seront toujours plus fluides que les effets aliment\u00e9s par JavaScript, qui modifient des propri\u00e9t\u00e9s similaires. Elles ne seront pas trait\u00e9es dans les tr\u00e8s vieux navigateurs mais, comme ceux-ci sont susceptibles de fonctionner sur des appareils moins performants, c&rsquo;est mieux ainsi.<\/p>\n<p>Cependant, \u00e9vitez les animations excessives. Les effets doivent am\u00e9liorer l&rsquo;exp\u00e9rience utilisateur sans nuire aux performances ou provoquer le mal de mer. V\u00e9rifiez la media query <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-motion\" target=\"_blank\" rel=\"noopener noreferrer\">prefers-reduced-motion<\/a> et d\u00e9sactivez les animations si n\u00e9cessaire.<\/p>\n<h3>\u00c9vitez d&rsquo;animer les propri\u00e9t\u00e9s qui d\u00e9clenchent une remise en page<\/h3>\n<p>Modifier les dimensions d&rsquo;un \u00e9l\u00e9ment (largeur, hauteur, marge int\u00e9rieure, bordure) ou sa position (haut, bas, gauche, droite, marge) peut entra\u00eener une nouvelle mise en page de toute la page \u00e0 chaque trame d&rsquo;animation. Les propri\u00e9t\u00e9s les plus efficaces \u00e0 animer sont :<\/p>\n<ul>\n<li><strong><code>opacity<\/code><\/strong><\/li>\n<li><strong><code>filter<\/code><\/strong>: Flou, contraste, ombre et autres effets<\/li>\n<li><strong><code>transform<\/code><\/strong>: Pour traduire (d\u00e9placer), mettre \u00e0 l&rsquo;\u00e9chelle ou faire pivoter un \u00e9l\u00e9ment<\/li>\n<\/ul>\n<p>Les navigateurs peuvent utiliser le GPU \u00e0 acc\u00e9l\u00e9ration mat\u00e9rielle pour rendre ces effets dans leur propre couche, de sorte que seule l&rsquo;\u00e9tape de composition est affect\u00e9e.<\/p>\n<p>Si vous devez animer d&rsquo;autres propri\u00e9t\u00e9s, vous pouvez am\u00e9liorer les performances en retirant l&rsquo;\u00e9l\u00e9ment du flux de la page avec position : absolute.<\/p>\n<h3>Attention aux s\u00e9lecteurs complexes<\/h3>\n<p>Les navigateurs analyseront rapidement les s\u00e9lecteurs CSS les plus complexes, mais les simplifier r\u00e9duit la taille des fichiers et am\u00e9liore les performances. Les s\u00e9lecteurs complexes sont souvent g\u00e9n\u00e9r\u00e9s lorsque vous cr\u00e9ez des structures profond\u00e9ment imbriqu\u00e9es dans des pr\u00e9processeurs CSS comme Sass.<\/p>\n<h3>Indiquez quels \u00e9l\u00e9ments vont changer<\/h3>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/will-change\" target=\"_blank\" rel=\"noopener noreferrer\">propri\u00e9t\u00e9 CSS will-change<\/a> vous permet d&rsquo;avertir de la fa\u00e7on dont un \u00e9l\u00e9ment sera modifi\u00e9 ou anim\u00e9 afin que le navigateur puisse effectuer des optimisations \u00e0 l&rsquo;avance :<\/p>\n<pre><code class=\"language-css\">.myelement {\n  will-change : transform, opacity ;\n}<\/code><\/pre>\n<p>Il est possible de d\u00e9finir un nombre quelconque de valeurs s\u00e9par\u00e9es par des virgules, mais la propri\u00e9t\u00e9 ne doit \u00eatre utilis\u00e9e qu&rsquo;en dernier recours pour r\u00e9soudre des probl\u00e8mes de performance connus. vous ne devez pas l&rsquo;appliquer \u00e0 un trop grand nombre d&rsquo;\u00e9l\u00e9ments et veillez \u00e0 lui donner suffisamment de temps pour s&rsquo;initialiser.<\/p>\n<h3>Consid\u00e9rez le confinement CSS<\/h3>\n<p>Le <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/CSS_Containment\" target=\"_blank\" rel=\"noopener noreferrer\">confinement<\/a> (ou containment) est une nouvelle fonctionnalit\u00e9 CSS qui peut am\u00e9liorer les performances en vous permettant d&rsquo;identifier les sous-arbres isol\u00e9s d&rsquo;une page. Le navigateur peut optimiser le traitement en rendant &#8211; ou en <em>ne <\/em>rendant <em>pas <\/em>&#8211; un bloc de contenu DOM sp\u00e9cifique.<\/p>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/contain\" target=\"_blank\" rel=\"noopener noreferrer\">propri\u00e9t\u00e9 contain<\/a> accepte une ou plusieurs des valeurs suivantes dans une liste s\u00e9par\u00e9e par des espaces :<\/p>\n<ul>\n<li><strong><code>none<\/code><\/strong>: Le confinement n&rsquo;est pas appliqu\u00e9<\/li>\n<li><strong><code>layout<\/code><\/strong>: La mise en page de l&rsquo;\u00e9l\u00e9ment est isol\u00e9e du reste de la page &#8211; son contenu n&rsquo;affectera pas les autres \u00e9l\u00e9ments<\/li>\n<li><strong><code>paint<\/code><\/strong>: Les enfants de l&rsquo;\u00e9l\u00e9ment ne sont pas affich\u00e9s en dehors de sa limite<\/li>\n<li><strong><code>size<\/code><\/strong>: La taille de l&rsquo;\u00e9l\u00e9ment peut \u00eatre d\u00e9termin\u00e9e sans v\u00e9rifier les \u00e9l\u00e9ments enfants &#8211; les dimensions sont ind\u00e9pendantes du contenu<\/li>\n<\/ul>\n<p>Deux valeurs sp\u00e9ciales sont \u00e9galement disponibles :<\/p>\n<ul>\n<li><strong><code>strict<\/code><\/strong>: Toutes les r\u00e8gles de confinement (sauf aucune) sont appliqu\u00e9es<\/li>\n<li><strong><code>content<\/code><\/strong>: Applique la mise en page et la peinture<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Une page comporte une liste <code>&lt;ul&gt;<\/code> avec <code>contain:strict<\/code> ; appliqu\u00e9. Si vous modifiez le contenu d&rsquo;un <code>&lt;li&gt;<\/code> enfant, le navigateur ne recalculera pas la taille ou la position de cet \u00e9l\u00e9ment, des autres \u00e9l\u00e9ments de la liste ou de tout autre \u00e9l\u00e9ment de la page.<\/p>\n<\/aside>\n\n<p>Le confinement CSS est <a href=\"https:\/\/caniuse.com\/mdn-css_properties_contain\" target=\"_blank\" rel=\"noopener noreferrer\">pris en charge par la plupart des navigateurs modernes<\/a>. Il n&rsquo;y a pas de prise en charge dans Safari ou les applications plus anciennes, mais le confinement peut \u00eatre utilis\u00e9 en toute s\u00e9curit\u00e9 dans celles-ci car le navigateur ignorera simplement la propri\u00e9t\u00e9.<\/p>\n<h3>R\u00e9agissez \u00e0 l&rsquo;en-t\u00eate Save-Data<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTTP\/Headers\/Save-Data\" target=\"_blank\" rel=\"noopener noreferrer\">Save-Data<\/a> est un en-t\u00eate de requ\u00eate HTTP indiquant que l&rsquo;utilisateur a demand\u00e9 des donn\u00e9es r\u00e9duites. Il peut \u00eatre \u00e9tiquet\u00e9 mode \u00ab Lite \u00bb ou \u00ab Turbo \u00bb dans certains navigateurs.<\/p>\n<p>Lorsqu&rsquo;il est activ\u00e9, un en-t\u00eate <code>Save-Data<\/code> est envoy\u00e9 avec chaque requ\u00eate du navigateur :<\/p>\n<pre><code class=\"language-text\">GET \/main.css HTTP\/1.0\nHost : site.com\nSave-Data : on<\/code><\/pre>\n<p>Le serveur peut r\u00e9pondre en cons\u00e9quence lorsque Save-Data est d\u00e9tect\u00e9. Dans le cas de CSS, il peut envoyer une mise en page lin\u00e9aire plus simple de type mobile, utiliser une police OS, passer \u00e0 des couleurs de bloc ou charger des arri\u00e8re-plans d&rsquo;image \u00e0 faible r\u00e9solution.<\/p>\n<p>Remarque : le serveur doit renvoyer l&rsquo;en-t\u00eate suivant sur les requ\u00eates modifi\u00e9es pour s&rsquo;assurer que le contenu minimal n&rsquo;est pas mis en cache et r\u00e9utilis\u00e9 lorsque l&rsquo;utilisateur d\u00e9sactive le mode Lite\/Turbo :<\/p>\n<pre><code class=\"language-text\">Vary : Accept-Encoding, Save-Data<\/code><\/pre>\n<p>L&rsquo;en-t\u00eate peut aussi \u00eatre d\u00e9tect\u00e9 par JavaScript c\u00f4t\u00e9 client. Le code suivant ajoute une classe bestUX \u00e0 l&rsquo;\u00e9l\u00e9ment <code>&lt;html&gt;<\/code>lorsque l&rsquo;option Save-Data <em>n&rsquo;<\/em> est <em>pas<\/em> activ\u00e9e :<\/p>\n<pre><code class=\"language-js\">if ('connection' in navigator && !navigator.connection.saveData) {\n  document.documentElement.classList.add('bestUX') ;\n}<\/code><\/pre>\n<p>Les feuilles de style peuvent alors r\u00e9agir en cons\u00e9quence sans aucune manipulation du serveur :<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n.bestUX header {\n  background-image: url(\"hero.jpg\");\n}<\/code><\/pre>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-data\" target=\"_blank\" rel=\"noopener noreferrer\">media query prefers-reduced-data<\/a> offre une option CSS uniquement comme alternative, bien que cela ne soit pris en charge par aucun navigateur au moment de la r\u00e9daction :<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n@media (prefers-reduced-data: no-preference) {\n  header {\n    background-image: url(\"hero.jpg\");\n  }\n}<\/code><\/pre>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Il existe de nombreuses options pour optimiser les performances CSS, mais pour les nouveaux projets, consid\u00e9rez les pratiques suivantes :<\/p>\n<ol>\n<li><strong>Utilisez une<\/strong> <a href=\"https:\/\/kinsta.com\/fr\/blog\/index-google-mobile-first\/\">approche mobile-first<\/a>: Commencez par coder la mise en page mobile la plus simple, puis ajoutez des am\u00e9liorations \u00e0 mesure que l&rsquo;espace de l&rsquo;\u00e9cran et les fonctionnalit\u00e9s du navigateur augmentent.<\/li>\n<li><strong>Divisez le CSS en fichiers s\u00e9par\u00e9s avec des responsabilit\u00e9s identifiables :<\/strong> Un pr\u00e9processeur CSS ou une <a href=\"https:\/\/kinsta.com\/fr\/blog\/combine-external-css\/\">extension CMS peut combiner les partiels CSS en un seul fichier<\/a>.<\/li>\n<li><strong>Ajoutez une \u00e9tape de construction :<\/strong> Il existe des outils qui peuvent automatiquement linter le code, identifier les probl\u00e8mes, concat\u00e9ner, minifier, r\u00e9duire la taille des images, et plus encore. L&rsquo;automatisation facilite la vie, et vous avez moins de chances d&rsquo;oublier une \u00e9tape d&rsquo;optimisation.<\/li>\n<li><strong>Documentez vos feuilles de style :<\/strong> Un guide de style avec des exemples document\u00e9s rendra votre code plus facile \u00e0 prendre en main et \u00e0 entretenir. Vous serez capable d&rsquo;identifier et de supprimer les vieux CSS sans transpirer.<\/li>\n<\/ol>\n<p>Enfin, <a href=\"https:\/\/kinsta.com\/fr\/blog\/meilleur-langage-programmation-apprendre\/#html-and-css\">apprennez le CSS <\/a>! Plus vous en saurez, moins vous devrez \u00e9crire de code et plus votre application web sera rapide. Cela fera de vous un meilleur d\u00e9veloppeur, quelles que soient les plateformes et les frameworks que vous utilisez.<\/p>\n<p><em>Quels autres conseils avez-vous pour optimiser les performances de CSS ? Partagez-les dans la section des commentaires !<\/em><\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00eame en 2021, les performances web restent un probl\u00e8me. Selon HTTP Archive, une page moyenne n\u00e9cessite un t\u00e9l\u00e9chargement de 2 Mo, effectue plus de 60 requ\u00eates &#8230;<\/p>\n","protected":false},"author":188,"featured_media":48780,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[417,341],"topic":[1034],"class_list":["post-48776","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-css","tag-web-development","topic-performance-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comment optimiser les CSS pour une performance maximale du site<\/title>\n<meta name=\"description\" content=\"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment optimiser les CSS pour une performance maximale du site\" \/>\n<meta property=\"og:description\" content=\"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-01T11:25:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-19T11:59:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Craig Buckler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@craigbuckler\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Buckler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/\"},\"author\":{\"name\":\"Craig Buckler\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e\"},\"headline\":\"Comment optimiser les CSS pour une performance maximale du site\",\"datePublished\":\"2021-10-01T11:25:13+00:00\",\"dateModified\":\"2023-10-19T11:59:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/\"},\"wordCount\":6349,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg\",\"keywords\":[\"css\",\"web development\"],\"articleSection\":[\"Tutoriels sur la performance WordPress\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/\",\"name\":\"Comment optimiser les CSS pour une performance maximale du site\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg\",\"datePublished\":\"2021-10-01T11:25:13+00:00\",\"dateModified\":\"2023-10-19T11:59:34+00:00\",\"description\":\"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Comment optimiser les CSS pour une performance maximale du site\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Performance de WordPress\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/performance-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comment optimiser les CSS pour une performance maximale du site\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e\",\"name\":\"Craig Buckler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"caption\":\"Craig Buckler\"},\"description\":\"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.\",\"sameAs\":[\"https:\/\/craigbuckler.com\/\",\"https:\/\/www.linkedin.com\/in\/craigbuckler\",\"https:\/\/x.com\/craigbuckler\",\"https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/craigbuckler\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment optimiser les CSS pour une performance maximale du site","description":"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment optimiser les CSS pour une performance maximale du site","og_description":"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.","og_url":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2021-10-01T11:25:13+00:00","article_modified_time":"2023-10-19T11:59:34+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg","type":"image\/jpeg"}],"author":"Craig Buckler","twitter_card":"summary_large_image","twitter_description":"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg","twitter_creator":"@craigbuckler","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Craig Buckler","Dur\u00e9e de lecture estim\u00e9e":"27 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/"},"author":{"name":"Craig Buckler","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e"},"headline":"Comment optimiser les CSS pour une performance maximale du site","datePublished":"2021-10-01T11:25:13+00:00","dateModified":"2023-10-19T11:59:34+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/"},"wordCount":6349,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg","keywords":["css","web development"],"articleSection":["Tutoriels sur la performance WordPress"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/","url":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/","name":"Comment optimiser les CSS pour une performance maximale du site","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg","datePublished":"2021-10-01T11:25:13+00:00","dateModified":"2023-10-19T11:59:34+00:00","description":"Les feuilles de style en cascade (CSS) peuvent sembler assez innocentes, mais elles peuvent n\u00e9cessiter un traitement lourd. Utilisez ce guide pour optimiser correctement le CSS et am\u00e9liorer les performances du site.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/10\/optimize-css.jpeg","width":1460,"height":730,"caption":"Comment optimiser les CSS pour une performance maximale du site"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/optimiser-css\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Performance de WordPress","item":"https:\/\/kinsta.com\/fr\/sujets\/performance-wordpress\/"},{"@type":"ListItem","position":3,"name":"Comment optimiser les CSS pour une performance maximale du site"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/715d986404b06691ab3014e06596908e","name":"Craig Buckler","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","caption":"Craig Buckler"},"description":"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.","sameAs":["https:\/\/craigbuckler.com\/","https:\/\/www.linkedin.com\/in\/craigbuckler","https:\/\/x.com\/craigbuckler","https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/craigbuckler\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=48776"}],"version-history":[{"count":12,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48776\/revisions"}],"predecessor-version":[{"id":56212,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48776\/revisions\/56212"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/translations\/de"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/translations\/pt"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/translations\/nl"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48776\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/48780"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=48776"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=48776"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=48776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}