156 votes

"Éliminer les CSS bloquant le rendu dans le contenu au-dessus du pli"

J'ai utilisé Google PageSpeed insights pour essayer d'améliorer les performances de mon site, et jusqu'à présent, cela s'est avéré extrêmement efficace. Des choses comme le report de scripts ont très bien fonctionné, puisque je disposais déjà d'une version interne de jQuery's .ready() pour différer les scripts jusqu'au chargement complet de la page, il m'a suffi de mettre en ligne cette fonction particulière et de déplacer les scripts complets à la fin de la page. Cela a très bien fonctionné.

Mais maintenant je me retrouve à regarder le seul point jaune restant sur la liste de contrôle : "Éliminer les feuilles de style en cascade (CSS) qui bloquent le rendu dans le contenu au-dessus du pli".

La façon dont mon CSS est configuré est d'avoir un global _.css contenant les styles qui s'appliquent à la structure de la page en général, ou qui sont utilisés à plus d'un ou deux endroits sur le site. La plupart des pages ont ensuite un fichier CSS associé (par exemple, party.php a party.css ) contenant des styles spécifiques à cette page particulière. Tous les fichiers CSS sont mis en cache indéfiniment, car j'ajoute /t=FILEMTIME aux noms de fichiers (et les supprimer ultérieurement avec .htaccess) afin de garantir que les fichiers sont mis à jour lorsqu'ils sont modifiés.

Quoi qu'il en soit, Google recommande de mettre en ligne les styles critiques nécessaires au contenu du haut de page. Le problème est que... eh bien, jetez un coup d'oeil à cette capture d'écran : http://prntscr.com/1qt49e

Comme vous pouvez le voir... TOUTES du contenu se trouve au-dessus du pli ! Les gens détestent le défilement, surtout sur un jeu qui implique le chargement de nombreuses pages. J'ai donc conçu le site pour qu'il tienne sur un seul écran (en supposant une résolution suffisante). Ce qui veut dire... TOUTES des styles s'appliquent au contenu supérieur au pli ! Alors... existe-t-il une solution ? Ou suis-je coincé avec cette marque jaune sur un score autrement presque parfait ?

187voto

Netsurfer Points 2947

Une question connexe a déjà été posée : Qu'est-ce que le "contenu au-dessus du pli" dans Google Pagespeed ?

Tout d'abord, vous devez noter que tout ceci concerne " pages mobiles ".
Donc, si j'ai bien interprété votre question et la capture d'écran, alors c'est pas pour votre site !

Au contraire, en faisant certaines des choses conseillées par Google dans ses directives, les sites Web "normaux" ne s'en porteront que plus mal.
Et tout ce qui vient de Google n'est pas le "saint Graal" simplement parce que cela vient de Google. Et eux-mêmes ne sont pas un bon modèle si vous regardez leur balisage HTML.

Le meilleur conseil que je puisse te donner est :

  • Donnez aux éléments remplacés une largeur et une hauteur définies dans votre CSS, afin que le navigateur puisse mettre en page l'élément et ne doive pas attendre le contenu remplacé !

De plus, pourquoi utilisez-vous différents fichiers CSS, plutôt qu'un seul ?
La demande supplémentaire est pire que le petit volume de données. Et après la première demande, le fichier CSS est de toute façon mis en cache.

Les choses dont il faut toujours prendre soin sont :

  • réduire autant que possible le nombre de demandes
  • maintenir le poids global de votre page aussi bas que possible

Et ne vous creusez pas la tête pour savoir comment obtenir 100% de l'outil PageSpeed Insights de Google ... ! ;-)

Ajout 1 : Voici la page sur laquelle Google nous montre, ce qu'ils recommandent pour Optimiser la diffusion des CSS .

Comme je l'ai déjà dit, je ne pense pas que cela soit réaliste ni que cela ait un sens pour un site web "normal" ! Parce que principalement lorsque vous avez un design web réactif il est certain que vous utilisez les media queries et autres styles de mise en page. Donc, si vous ne chargez pas votre CSS en premier et de manière bloquante, vous obtiendrez une FOUT ( Flash de texte non stylisé ). Je ne crois vraiment pas que ce soit "mieux" que quelques millisecondes de plus pour rendre la page !

Je pense que Google est en train de lancer une nouvelle "hype" (quand je regarde toutes les questions à ce sujet ici sur Stackoverflow) ... !

9voto

frequent Points 8657

Quelques conseils qui peuvent vous aider :

  • Je suis tombé hier sur cet article sur l'optimisation des CSS : Profilage CSS pour l'optimisation ...
    Beaucoup d'informations utiles sur les feuilles de style en cascade (CSS) et sur celles qui entraînent le plus de pertes de performances.

  • J'ai vu la présentation suivante sur jQueryUK sur les "secrets cachés" dans Googe Chrome (Canary) Dev Tools : DevTools peut le faire . Consultez les sections sur Le temps de la première peinture , les repeints et les CSS coûteux.

  • Aussi, si vous utilisez un chargeur comme requireJS vous pourriez jeter un coup d'œil à l'un des plugins de chargeur CSS, appelé require-CSS qui utilise CSSO - un optimiseur qui fait aussi de l'optimisation structurelle, par exemple en fusionnant des blocs ayant des propriétés identiques. Je l'ai utilisé à quelques reprises et il peut économiser pas mal de CSS d'un cas à l'autre.

En dehors de la question : Je suis d'accord avec @Enzino pour créer un sprite pour toutes les petites icônes que vous chargez. La taille des fichiers est si petite qu'elle ne justifie pas vraiment un aller-retour du serveur pour chaque icône. Gardez également à l'esprit le nombre total de requêtes http simultanées que votre navigateur peut effectuer. Ainsi, les demandes pour un grand nombre de petites icônes bloquent également le rendu. Bien qu'il s'agisse d'une page vide comparée à la vôtre, j'aime bien la façon dont duckduckgo charge par exemple.

4voto

Glipt Points 111

Moi aussi, j'ai eu du mal avec cette nouvelle mesure de pagespeed.

Bien que je n'aie trouvé aucun moyen pratique de faire remonter mon score à 100 %, il y a certaines choses que j'ai trouvées utiles.

Combiner tous les css dans un seul fichier a beaucoup aidé. Tous mes sites sont remontés à %95 - %98.

La seule autre chose à laquelle j'ai pensé était de mettre en ligne toutes les css nécessaires (ce qui semble être la plupart d'entre elles, du moins pour mes pages) sur la première page pour obtenir le meilleur score. Bien que cela puisse aider votre score de vitesse, cela rendra probablement votre page plus lente à charger.

-4voto

user3393230 Points 1

Rendu signifie chargement, donc si un java script bloque le rendu, cela signifie que le java script empêche le chargement de la page. Google suggère de supprimer les scripts java et les css qui affectent le chargement du contenu des pages de votre site. En plaçant simplement les scripts java script et css dans le pied de page.

Pour plus de références, lisez l'article ci-dessous :

Plugin WordPress pour éliminer le JavaScript et le CSS bloquant le rendu dans le contenu au-dessus du pli.

100 % résolu........

Prograide.com

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

Powered by:

X