Je veux rendre mon application angular-cli plus rapide !
Bon, alors j'ai passé un certain nombre de jours à mettre à jour mon application NG2 pour fonctionner avec angular-cli. Au début, c'était une expérience assez frustrante, cependant, je vois vraiment la lumière et j'apprécie le processus de développement. Il est clair que le framework a fait l'objet de beaucoup de travail et de réflexion.
Mais mon application est lente :
Selon Pingdom mon application est plus rapide que 21% de tous les autres sites sur Internet. Pour être honnête, il s'agit d'une application prête à l'emploi. ng construire et je suis sûr que je peux accélérer le processus de manière significative.
Ma dernière question est la suivante : comment réduire radicalement la taille d'un site Web angulaire ?
En l'état actuel des choses, l'application : fairplay.poker Il faut 7 secondes pour charger le site (si vous habitez à New York). Je suis donc certain que la plupart des gens seront passés à autre chose avant qu'il n'ait eu le temps de se charger.
Il est clair que je dois me lancer dans un voyage pour augmenter radicalement la vitesse de l'application mais j'ai besoin de votre aide ! (parce que je ne sais pas ce que je fais :)
Quelle est la pratique standard et par où commencer pour faire le tri ?
PROGRESS :
Au fur et à mesure que des suggestions seront faites, je les mettrai à jour ici.
1. @cyrix Construction suggérée pour la production : ng build -prod
Le fichier Zip a diminué de plus d'un méga et les nouvelles statistiques de Pingdom sont bien meilleures que les statistiques originales :
2. Réduction suggérée de la taille de l'image.
Certaines des images étaient un peu plus grandes qu'elles n'auraient dû l'être, elles ont donc été réduites. Ce n'est pas une amélioration majeure, mais les statistiques ont élevé le site dans le top 73% des sites ayant un temps de chargement légèrement plus rapide.
3. @yurzui a suggéré la compression gzip, je l'ai donc activée. Apparemment, cela fonctionne et la taille totale des fichiers a été réduite de plus de la moitié (609 octets), mais cela n'apparaît pas sur Pingdom. Je note que la note s'est quelque peu améliorée, cependant.
J'ai utilisé ce site pour vérifier la compression et ce site m'a montré comment faire puisque Cpanel ne semblait pas fonctionner lorsqu'il était activé depuis l'administration. Ce site semble également être un bon compression gzip ressource.
4 @Yuruzi a suggéré de mettre en place un cache de navigateur. Je l'ai donc fait !
Ce qui est vraiment intéressant, c'est l'amélioration du niveau de performance, ça déchire ! Le temps de chargement est un peu plus rapide et le site est maintenant dans le top 74%. Comme suggéré par Yuruzi, j'ai utilisé ce poste à titre indicatif.
5 Merci à @wafflej0ck sur le canal #angularjs. Il semble que j'avais besoin d'améliorer GZip, ce que j'ai fait en changeant le type de compression en "AddOutputFilterByType DEFLATE *" comme indiqué. ici .
Cela semble avoir surchargé le site :
6 Il a été suggéré d'utiliser l'AOT, j'ai donc pris une page de l'AOT. ce poste .
J'ai parcouru la majeure partie de la documentation, mais j'obtenais un tas d'erreurs et j'ai décidé de remettre cela à plus tard, en espérant que AOT soit un peu plus stable.
J'ai lu sur GitHub que Angular-Cli est livré avec AOT préinstallé et que l'article ci-dessus n'est pas pertinent. Je ne suis pas sûr de la véracité de cette affirmation, mais j'exécute la commande suivante lors de la compilation du code : ng build --prod --aot
7. J'ai modifié le fichier mod_expires.c dans le fichier htaccess.
Les performances se sont nettement améliorées, passant à 98 %. Le temps de chargement est désormais inférieur à une seconde et le site est plus rapide que 91 % des sites testés.
Le fichier ressemble actuellement à ceci :
ExpiresActive On ExpiresDefault "accès plus de 2 jours". ExpiresByType image/x-icon " accès plus 1 an ". ExpiresByType image/jpeg " accès plus 1 an ". ExpiresByType image/jpg "droit d'accès + 1 an". ExpiresByType image/png " accès + 1 an ". ExpiresByType image/gif " accès plus 1 an ". ExpiresByType application/x-shockwave-flash " accès + 1 mois ". ExpiresByType text/css " accès plus 1 mois ". ExpiresByType text/javascript " accès plus 1 mois ". ExpiresByType application/pdf " accès plus 1 mois ". ExpiresByType application/javascript " accès plus 1 semaine ". ExpiresByType application/x-javascript " accès plus 1 semaine ". ExpiresByType text/javascript " accès plus 1 semaine " ExpiresByType text/html " accès plus 600 secondes ". ExpiresByType application/xhtml+xml "accès plus 600 secondes".
À ce stade, je ne peux m'empêcher de penser que j'ai maintenant affaire à des rendements décroissants.
- Suppression des polices et des images non utilisées qui étaient incluses dans le css.
Le temps de chargement a diminué et les performances du site sont maintenant de 100%.
- DNS et SSL lents
J'ai remarqué qu'une bonne partie du temps de chargement était due au DNS et au SSL. Pour résoudre ce problème, j'ai ouvert un compte CloudFlare gratuit, car ils ont des nœuds à peu près partout, ce qui devrait accélérer certaines choses...
Et c'est effectivement le cas. Malheureusement, l'hôte de New York de PingDom a été supprimé, mais les statistiques de Dallas sont très prometteuses, avec un temps de chargement bien inférieur à une seconde !
D'AUTRES BONS ARTICLES
Ce type a un bon article sur l'optimisation des sites angulaires également
0 votes
Bonjour avez-vous réduit le contenu ? .. css et js et html ?
0 votes
Tout d'abord, votre application ne fonctionne pas en mode production. Vous devriez aussi utiliser des choses comme UglifyJS, AoT et CSSNano (essayez d'utiliser
ng build --prod
)0 votes
Je suis d'accord, ce n'est pas un mode de production take.ms/c49Rh Vous pouvez consulter la documentation github.com/angular/angular-cli/blob/master/docs/documentation/
ng serve --prod will also make use of uglifying and tree-shaking functionality
Puisque beta28--aot
La valeur par défaut est true dans--prod
0 votes
Wow, rien qu'en utilisant le drapeau --prod, le temps de chargement a été réduit de 4 secondes. La taille de la page a été réduite à 1,3 Mo... incroyable.
0 votes
Essayez ensuite d'activer la compression gzip
0 votes
Activer le cache du navigateur stackoverflow.com/questions/6867264/leverage-browser-caching
0 votes
Activation du support HTTP2
0 votes
@yurzi Compression Gzip activée. Performances mises à jour sur le poste.
0 votes
@cyrix Merci pour votre aide - le travail est beaucoup plus rapide.
0 votes
@yurzi Je ne pense pas qu'il y ait un support HTTP2 avec les serveurs cpanel...
0 votes
Merci pour ce partage. J'ai ajouté vos recommandations à mon projet (simple) et j'ai obtenu une note Pingdom de "A 97". Vous avez dit que vous n'avez pas appliqué Angular Universal à votre projet. C'est essentiel. Avec des modifications côté serveur (comme la diffusion de contenu compressé à l'avance et l'application du cache sur le client), mon site simple affiche le contenu en 43 ms seulement. J'ai partagé les concepts sur github github.com/zertyz/zertyz-rust-playground/tree/master/