Quelle est la différence entre un site statique et un site dynamique ?
A la fin des années 90, mais surtout au début des années 2000, PHP a démocratisé les pages web dynamiques. D’autre technologies existent, portée par Java, .Net ou plein d’autres, mais le fonctionnement classique reste le même :
Un système de gestion de contenu, SGC en français ou CMS plus généralement est une famille de logiciels destinés à la conception et à la mise à jour dynamique de sites Web.
A chaque action sur un site dynamique traditionnel (comme n’importe quel CMS porté par php) …
- Un appel est fait au serveur qui lit les paramètres de la requête pour savoir quelle page générer
- Il génère ensuite la nouvelle page à afficher.
- Le serveur renvoie la page que le navigateur télécharge et affiche.
Sur un site statique, toutes les pages sont déjà prêtes. Le fonctionnement est donc beaucoup plus rapide lorsqu’une page doit être affichée :
- Un appel est fait au serveur qui lit les paramètres de la requête pour savoir quelle page renvoyer
- Le serveur renvoie la page que le navigateur télécharge et affiche.
On économise donc la phase de génération qui est la phase la plus coûteuse. Car pour générer une page à la volée, il faut un installer et maintenir un environnement de génération (comme php) en plus du serveur web. Il faut également disposer en permanence de la puissance de calcul et de la mémoire nécessaire à son fonctionnement.
Avec un générateur de site statique comme Hugo les pages ne sont générées qu’une seule fois au moment de la publication. Il n’est donc pas nécessaire de posséder un environnement de génération à la volée, le serveur web suffit.
On peut comparer un site statique à un programme compilé : le site n’est généré (compilé) qu’une fois pour être utilisé de nombreuses fois.
Comme pour les langages compilés, travailler en statique demande moins de ressources matérielles et moins de puissance (donc moins d’électricité). C’est donc un choix naturel pour nous.
Et s’il est nécessaire de dynamiser quelque chose ?
S’il est nécessaire de dynamiser une partie de la page (par exemple un panier, un prix, un stock ,… ), il est possible de le faire via des consommations de services web (souvent nommés “API”, même si c’est un mot valise).
Une API est un ensemble de définitions et de protocoles qui facilite la création et l’intégration de logiciels d’applications.
Un web service ne renverra que les informations à afficher, sans notions d’apparence ou de présentation. C’est ensuite le navigateur de l’internaute qui réalise le travail de mise en forme et d’affichage.
Cette méthode est donc moins gourmande en bande passante, puisqu’on ne véhicule pas les informations d’apparence à chaque mise à jour de la zone, et demande des serveurs moins puissants puisque le travail de mise en forme est délégué à l’ordinateur de l’internaute.
Notez que ce travail n’est que peu gourmand lorsqu’on demande à un navigateur de le faire une fois par affichage. Il devient surtout coûteux lorsqu’on demande à un serveur de gérer l’affichage de toutes les pages pour tous les internautes.
Pour la logique des web services eux même, c’est encore une fois le langage go qui sera utilisé, pour toutes les raisons déjà évoquées
En conclusion
Utiliser des pages statiques générées par Hugo et gérer les dynamisations avec des services web en Golang permet d’économiser en processeurs, en mémoire et en bande passante sur toute la chaîne d’une requête sur internet.
Et en toute logique, cela permet de limiter le coût de la plateforme sur toute sa durée de vie tout en limitant son impact écologique : moins de matériel et moins d’énergie.
Et au plus un site est visité, au plus l’économie est grande !
L’étape suivant est d’essayer de supprimer complètement les serveurs, mais cela sera l’objet d’un autre article.