Skip to main content
Seb's blog
logo PassionGNU/Linux

Un petit retour sur les SSG?

Je me suis dis que le blog tournait depuis 2017 avec un SSG ou GSS pour Générateur de Site Statiques, qu’il était temps de parler de mon ressenti, les lacunes ou les plus de ce genre de moteurs pour un simple blog. Je n’utilise plus de moteurs dynamiques depuis tout ce temps, je ne m’en porte pas plus mal tellement c’est efficace, je ne me vois clairement pas revenir en arrière, c’est peu probable car je n’ai aucuns manques.

J’ai pas mal tourné sur les dynamiques, j’ai tout eu ou pratiquement que ce soit SPIP, Dotclear, Drupal, Joomla, Wordpress, PluXML, Guppy, …; j’en passe mais vraiment j’ai changé pas mal de fois, c’est comme tout avec moi, il faut changer. Le seul que je continue d’avoir mémorablement dans l’esprit c’est et ça restera SPIP, mais je ne pourrais pas revenir sur ce genre de moteurs. En vrai, ça demande beaucoup de ressources, surtout si on est en hébergement partagé, ça ralentit sévère, puis plus on a de visiteurs plus on aura des lacunes. Ça demande aussi des connaissances sur la sécurité, malgré ce qu’on peut entendre ailleurs.

Les SSG sont autres choses, ça se passe sur la machine, puis on envois le résultat du build sur le serveur. Pas de possibilités de hacker le site, pas d’interface admin, pas de bases de données (MYSQL, SQL,…), juste des fichiers html, du code js, des images…

De notre coté, nous allons avoir des fichiers en markdown (MD), c’est un type de texte hyper visible et compréhensible pour les humains, que n’importe quel éditeur interprète directement. Chaque fichier MD sera soit une page soit un billet. Nous aurons aussi des fichiers templates, dans mon cas c’est du NJK, mais ça peut être en liquid, html, … Avec des feuilles de styles en CSS ou autres, puis bien sûr les images, scripts et autres joyeusetées. Au moment de la fabrication, il va tout prendre et ce va tout remettre en HTML.

Ça a plusieurs avantages, de un clairement c’est beaucoup plus rapide, il n’y a aucun va et vient autre que la demande de l’ordinateur du client sur le serveur, pas de base de données à questionner. C’est quasi instantanée, du coup ça ne demande quasi rien en terme de ressources. L’autre gros avantage, c’est la sécurité du site, pas de base de données, pas d’interface admin, donne peu ou rien comme occasion pour pirater le site. Un autre avantage pas si niaise que ça est la place nécessaire, à valeur égale, le site dynamique sera beaucoup plus imposant que son acolyte statique, mon blog fait 23mo sans les images (sinon 40mo d’images).

On a aussi des lacunes, le seul véritablement c’est quand on a besoin de quelque chose de dynamique, la recherche est un exemple, mais qu’on peut facilement combler comme on peut voir sur ce blog, chez moi c’est juste une page NJK avec du HTML:

<h1>Recherche</h1>
<input type="text" id="search" autocomplete="on" />
<div id="results"></div>
<script src="/js/search1.js" async defer></script>

et du code .JS:

(async () => {
  document.getElementById('search').addEventListener('keyup', (event) => {
    const searchString = event.target.value.toLowerCase()
    const results = []
    posts.forEach((post) => {
      if (
        post.title.toLowerCase().includes(searchString) ||
        post.excerpt.toLowerCase().includes(searchString) ||
        post.content_html.toLowerCase().includes(searchString) ||
        post.keywords.toLowerCase().includes(searchString) ||
        post.tags.toLowerCase().includes(searchString)
      ) {
        results.push(`<a href="${post.url}">
          <h2>
            ${post.title}
          </h2>
          <p>
            ${post.excerpt}
          </p>
        </a>`)
      }
    })

    document.getElementById('results').innerHTML = results.join('')
  })

  const posts = await fetch('/search.json').then(res => res.json())
})()

Non, là où ça pose réellement des soucis c’est pour les commentaires, mais des échappatoires existent, comme le non-libre mais populaire Disqus (comme dans notre cas), ou d’autres libres, ou encore des solutions qui peuvent faire passer la pilule comme notre forum!

Le blog tourne donc depuis 2017 comme ça, c’est-à-dire 6 ans, j’ai pas mal testé et là encore j’ai tourné sur pas mal de chose, que ce soit le plus populaire Hugo, Jekyll, Pelican, Hexo, Astro, Zola ou bien 11TY qui est mon choix final. Le changement entre chaque moteur est moins emmerdant que sur les dynamiques, puisque les fichiers sont tous du MD, sur les métadonnées de chaque billet peut poser des soucis de compatibilités, facilement modifiables, puis pour être honnête, Pelican, Hexo et 11ty sont les moins exigeants se contentant d’un titre.

Je suis content de ce que j’ai, si je bouge actuellement ou ces derniers temps, c’est juste pour garder la forme, pour voir ce qui se fait ailleurs, mais le mixte actuel de 11ty+forum+disqus me va bien.

J’ai fait un trie, même plusieurs fois, le blog est là depuis 2007, donc j’ai viré une grosse partie, tout ce qui est d’avant 2017, puis là-dessus j’ai encore fait un trie. J’ai balancé tout dans /posts et j’ai gardé sous /blog que le dernier billet 2022 et l’année en cours.

C’est la meilleur chose qui me soit arrivé, partir sur un GGS a été dur sur le coup, normale fallait réapprendre tout, mais ça valait le coup. UN bon billet qui dénote tout ça est beginner-eleventy-tutorial-parti.

Commencer la discussion: Venez écrire un commentaire dans le forum.