J'optimisais le temps de chargement des pages d'un site Web. L'un des moyens consistait à combiner plusieurs requêtes HTTP pour CSS en une seule requête HTTP combinée. Mais l'un des examinateurs a posé une question intéressante: la paralysie du téléchargement de plusieurs fichiers CSS ne réduirait-elle pas les temps de chargement des pages?
Je n'ai jamais envisagé cette option, car la seule chose que j'ai lue sur Internet est que la réduction du nombre de requêtes HTTP (bloquantes) est la clé d'une page Web plus rapide (bien que Google Pagespeed Insights ne semble pas énoncer clairement cela 1 ).
Je vois quelques raisons pour lesquelles la parallellisation n'améliorerait pas les performances, ou n'a que très peu d'importance (contrebalancée par l'avantage d'utiliser moins de requêtes HTTP):
- La mise en place d'une nouvelle connexion coûte cher. Bien que la configuration de plusieurs connexions puisse se faire en parallèle, les navigateurs utiliseront au plus environ 4 à 6 connexions (selon le navigateur), donc le téléchargement de CSS en parallèle bloquerait le téléchargement d'autres ressources comme JavaScript et les images.
- La configuration d'une connexion HTTPS nécessite des données supplémentaires. J'ai lu que cela peut facilement être quelques Ko de données. Il s'agit de données supplémentaires qui doivent être envoyées via le fil, au lieu du CSS que nous voulons réellement envoyer.
- En raison de l'algorithme TCP Slow Start, plus il y a de données envoyées via une connexion, plus la connexion sera rapide. Les connexions à durée de vie plus longue enverraient donc les données beaucoup plus rapidement que les nouvelles connexions. Voir par exemple le protocole SPDY, qui utilise une seule connexion pour améliorer les temps de chargement des pages.
- TCP est une abstraction: il n'y a toujours (normalement) qu'une seule connexion sous-jacente. Ainsi, alors que plusieurs demandes sont utilisées, les données envoyées via le câble ne bénéficient pas nécessairement de plusieurs connexions pour améliorer la vitesse.
- Les connexions Internet sont intrinsèquement peu fiables, en particulier sur mobile. Une demande peut être terminée beaucoup plus rapidement que l'autre. L'utilisation de plusieurs demandes CSS signifie que le rendu de la page Web est bloqué jusqu'à la fin de la dernière demande, ce qui peut être considérablement plus tard que la connexion moyenne.
Alors, y a-t-il un avantage à paralléliser les requêtes HTTP pour les fichiers CSS?
Remarque / mise à jour: tous les fichiers CSS bloquent le rendu. Les fichiers CSS qui ne l'ont pas déjà été ont été déplacés en dehors du chemin critique.