Contexte et objectifs
Le développeur souhaitait un blog ultra‑léger, rapide, gratuit de tout code superflu et compatible avec plusieurs instances. Les solutions classiques (Medium, Blogger, Ghost, WordPress, Hugo) ont été rejetées pour leurs surcharges fonctionnelles ou leurs exigences d’infrastructure. L’objectif final était d’obtenir un score parfait 100 % sur chaque catégorie Lighthouse, mesurée via pagespeed.web.dev.
Architecture initiale avec Next.js
Le site était initialement construit avec Next.js 16.1.6, profitant de l’ISR (Incremental Static Regeneration) et du cache intégré. Le déploiement sur Vercel offrait un CDN natif, mais le plan Pro était coûteux et le modèle serverless introduisait des temps de démarrage à froid. Malgré le cache, chaque visite hors de la région d’origine subissait la latence réseau.
Un audit Lighthouse a révélé 230 460 octets de JavaScript inutilisé. Ce code provient du runtime client de Next.js, présent même sur les pages purement statiques. Les composants next/link et next/image (marqués "use client") entraînent le chargement du runtime, de l’hydratation et du payload RSC du routeur, même si aucune interaction n’est prévue.
Le temps de tâche bloquante avant rendu était de 309,3 ms, soit un goulot d’étranglement majeur pour la performance perçue.
Migration vers Hono et optimisation du pipeline
Pour éliminer le runtime superflu, le développeur a abandonné Next.js au profit du micro‑framework Hono, qui propose une API minimaliste, un support JSX et une intégration native avec les CDN. La migration a consisté à remplacer les routes Next.js par des handlers Hono, à supprimer les imports next/link et next/image, puis à laisser le serveur servir uniquement du HTML statique.
Les images sont désormais traitées par Cloudflare Image Transformations, qui offre 5 000 transformations gratuites. Cette approche évite le redimensionnement manuel, la compression locale et la double mise en cache (S3 + CloudFront) utilisée précédemment.
Après migration, le poids du JavaScript est tombé à 407 octets, soit une réduction de plus de 99 %. Le temps de tâche bloquante a chuté à 68,01 ms**, soit une amélioration d’environ 78 %**. Le temps de construction du site a également diminué d’environ 40 % grâce à l’absence de compilation Next.js.
Résultats et analyse
Le score Lighthouse atteint désormais 100 % sur chaque catégorie : Performance, Accessibilité, Best Practices, SEO (le dernier limité à 69 % par une configuration de blocage d’indexation). La suppression du runtime JavaScript a éliminé le « unused code », réduisant le temps de téléchargement et le temps de traitement du navigateur.
Cette expérience montre que, pour des sites purement statiques, un CDN combiné à un framework ultra‑léger comme Hono peut surpasser des solutions « tout‑en‑un » telles que Next.js, surtout lorsqu’on vise des métriques d’optimisation extrêmes. Le compromis réside dans la perte de fonctionnalités avancées (routing dynamique, ISR intégré) qui doivent être recréées manuellement si nécessaire.