Soudainement, un jour, la génération de mon blog déployé sur Netlify a commencé à échouer. La raison : un dépassement du temps limite d’exécution…
Au début, j’ai pensé que c’était dû au fait que j’avais extrait le thème d’un module Git vers un dossier indépendant et versionné dans mon dépôt. J’ai fait cela parce que la fonction de mise à jour automatique utilisant un module Git avait cassé la génération la veille du jour où j’ai rencontré cet autre problème de génération.
J’ai cherché et après quelques jours de réinitialisation des changements de thème et de validation que la génération fonctionnait localement, j’ai lu attentivement les logs de Netlify.
Sur mon PC (processeur i3 et 8 Go), la commande Hugo s’exécutait en moins de 10 s. Pour le même dépôt et le même commit, elle s’exécutait en 36 secondes sur Netlify.
Voici l’erreur reçue de Netlify :
|
|
Les statistiques de génération de mon dépôt étaient les suivantes :
|
|
Pensant que c’était lié au thème, j’ai demandé à CaiJimmy dans cette discussion sur le dépôt de son thème.
Il m’a recommandé d’utiliser cette extension, parce que le traitement des images est ce qui prend le plus de ressources et de temps pendant la génération.
L’extension met en cache, lors de l’événement post-build, le dossier resources
, s’il n’est pas déjà en cache. C’est ici que Hugo place les images traitées. Ensuite, lors des générations suivantes, il utilise le cache de l’événement pre-build.
Le temps de génération est devenu :
|
|
Une amélioration de 36 fois, pas mal, n’est-ce pas ? 😁 Quand je dis réduire par 2 le temps de génération dans le titre, je parle du temps total que Netlify enregistre. Les 36 fois ci-dessus ne concernent que l’étape de génération par Hugo.
La chose importante à garder à l’esprit : la première génération sera toujours lente, donc vous devez avoir le paramètre timeout
que vous pouvez le définir dans le fichier config/_default/config.toml
:
|
|
Si vous faites un Clear cache and deploy site
, vous verrez un temps de construction lent.
Vous pouvez reproduire la lenteur en local
Si vous supprimez les dossiers public
et resource
, qui ne sont pas versionnés sur le dépôt, vous obtiendrez :
|
|
Merci d’avoir lu cet article.
Crédit: Photo par Marc-Olivier Jodoin sur Unsplash.