đŸ Archived View for lord.re âș posts âș 178-compression-gzip-static-nginx âș index.gmi captured on 2022-06-03 at 23:05:36. Gemini links have been rewritten to link to archived content
âĄïž Next capture (2024-08-18)
-=-=-=-=-=-=-
-------------------------------------------------
[27/08/2019] - ~4mins - #nginx #hugo #web
-------------------------------------------------
La mode actuelle des sites statiques n'est pas qu'une ⊠heu ⊠mode.
Les sites statiques ont en effet énormément d'avantages dont les excellentes performances.
Contrairement à un site dynamique qui va devoir générer la page à chaque fois qu'une personne la demande, le site statique, lui, aura généré toutes les pages en amont.
Le serveur web, n'a donc plus qu'Ă les envoyer et c'est tout.
D'un point de vue performance c'est excellent (et du coup c'est plus Ă©colo, d'ailleurs) bref.
Il est assez courant de ne pas envoyer les pages brutes directement : elles sont souvent envoyĂ©es compressĂ©es histoire d'ĂȘtre moins gourmande en dĂ©bit rĂ©seau.
Le navigateur, lorsqu'il demande un document (une page, un fichier, une vidéo, un truc) envoie quelques informations supplémentaires avec sa demande.
Dans les entĂȘtes de la requĂȘte, il indique quels sont les formats d'encodage qu'il sait gĂ©rer.
Par exemple mon navigateur indique <kbd>Accept-encoding: gzip, deflate, br</kbd>.
Ce qui signifie que les rĂ©ponses peuvent ĂȘtre compressĂ©es selon les algorithmes *gzip, deflate ou bien brotli*.
Ces systÚmes de compression sont trÚs efficaces pour les documents textuels mais pour ce qui est images/vidéos/sons ça sert à peu prÚs à rien (les données sont déjà compressées avec des algos largement plus efficaces).
Un site ouaib est trĂšs souvent rempli de texte mĂȘme si on va pas se le cacher, c'est tous les mĂ©dia qui sont des centaines de fois plus gros que du texte.
Mais c'est pas pour autant que ça ne vaut pas le coup de compresser les textes.
En compressant le texte de mon site, j'ai presque divisé par deux la taille de la page d'accueil puisque je n'ai quasiment pas d'images.
Tous mes fichiers textes représentent environ 20Mo et aprÚs moulinette font un peu moins de 6Mo en brotli.
En sachant que ces fichiers seront envoyés en permanence aux clients, ça peut vous permettre d'économiser un tiers de votre bande passante mine de rien.
Habituellement, aprÚs avoir configuré le serveur web, c'est lui qui se démerde à compresser les données à la volée et les envoyer.
C'est bien mais pas top.
Il va les compresser le moins possible (histoire d'ĂȘtre le plus rapide pour pas que les gens attendent) et le faire Ă chaque fois (bon en vrai j'imagine qu'il va les mettre un peu en cache pour pas le refaire Ă chaque fois mais bon.).
Une meilleure solution est de passer par un autre module de nginx qui permet de lui filer les fichiers originaux mais également les fichiers compressés à cÎtés.
Donc vous stockez votre index.html mais aussi index.html.gz et pourquoi pas index.html.br.
Et lorsqu'un navigateur annonce qu'il supporte par exemple le gzip, nginx lui servira le fichier gzippé plutÎt que le non-compressé.
Pour activer ça dans *nginx il vous faut avoir le module gzip_static et/ou brotli_static*.
Pour vérifier lancez un simple *<kbd>nginx -V</kbd>* et vérifiez qu'il apparait bien dans la liste.
Ensuite dans votre conf nginx ajoutez juste un *<kbd>gzip_static on;</kbd> et/ou <kbd>brotli_static on;</kbd>*.
C'est tout.
Il ne vous reste qu'Ă compresser vos fichiers.
Vous pouvez vous le tapez Ă la main mais perso j'utilise un ptit outil fait pour *static-compress*.
C'est du rust donc c'est bien !
Ouai je suis hypé, désolé.
Pour l'installer c'est avec *<kbd>cargo install static-compress</kbd>* et voilĂ .
Maintenant il suffit de lancer un joli *<kbd>static-compress -c zopfli -e gz -j 16 "\\/\.svg" "\\/\.html" "\\/\.csv" "\\/\.css" "\\/\.txt" "\\/\.xml"</kbd>* .
Ă lancer dans votre dossier contenant votre site ouaib.
Il va le parcourir et compresser tous les fichiers avec les extensions données.
D'ailleurs en passant, zopfli c'est un chouilla mieux que gzip mais c'est compatible, donc à privilégier.
Et si vous re-générez votre site, pensez à relancer la commande histoire qu'il recompresse tout.
Perso, j'ai ajouté ça dans la liste des commandes de déploiement du site.
Je vous en parlerai un peu plus un de ces quatre.
-------
Cet article passede 14Ko Ă 4.9Ko.
------------------------------------
------------------------------------
[27/08/2019] [nginx hugo web]
------------------------------------