Afin d’optimiser la vitesse d’affichage de ce site, tout en restant indépendant des ralentissements techniques de mon providers (lenteurs PHP et MySQL surtout), j’ai réalisé un petit script perso qui convertit les pages dynamiques de SPIP (.php) en pages statiques (.html).
Outre le fait d’assurer la pérénité du site sur les années (le php et spip peuvent ne plus marcher par manque de support technique, mais le html sera toujours lu par les navigateurs), il me permet aussi d’avoir une image fixe à l’instant T du site (la partie statique), pendant que je modifie profondément l’image SPIP (la partie dynamique). A charge ensuite de refaire une nouvelle image statique du site dès que les modifications sont adéquates.
Le script tient en un seul fichier et utilise le moteur de SPIP lui-même pour faire la "compilation" des pages (en fait, il demande une page à SPIP -qui la fabrique à la demande- et la sauvegarde dans une page html statique) en parcourant l’arborescence du site. A l’origine, il a été fabriqué pour mes propres besoins mais doit pouvoir tourner pour tous les sites SPIP qui n’ont pas été customisés outre mesure.
Le principe -et la configuration- du script est de lire les pages dans une URL dédiée à SPIP (ex : "/spip") et d’écrire les pages statiques dans une autre URL (ex : "/html"). Outre la création des pages html, le script copie aussi le répertoire "spip/IMG" de SPIP (images et miniatures générées par le moteur de publication) dans le répertoire cible. Il y a donc copie de données et usage double d’espace disque. Donc, lors de la création des pages sous SPIP, il est recommandé d’utiliser des images déjà formatées et stockées dans un répertoire dédié du site (ex : "/images" ou "/photos").
Autre précaution : le style graphique. SPIP, et c’est très bien ainsi, utilise des feuilles de style (css) pour l’affichage des pages. Là encore, pour que la version html fonctionne, il convient de placer les fichiers .css dans un répertoire dédié (ex : "/css") afin que les pages dynamiques (spip) et statiques (html) puissent accéder aux feuilles de style indépendamment de leur mode d’affichage.
Ci-joint le script à installer sur le serveur web :
(utilisez la fonction "enregistrer..." de votre navigateur pour sauvegarder sur votre disque, et pensez à retirer ensuite le .txt à la fin du nom de fichier)
Il s’agit d’un script PHP à placer sur le serveur, afin de compiler des pages dynamiques SPIP (.php) en pages statiques (.html).
L’idéal est de l’installer à la racine du site, en amont des répertoires "spip" (source des pages) et "html" (destination des pages compilées).
Les paramètres de ce script sont les suivants :
$url_src = "spip/" ;
$dsk_src = $url_src ;
$dsk_dst = "html/" ;
$imglink = "IMG/" ;
$workfile = "spip_static.txt" ;
$default = "index.html" ;
Note : tous ces paramètres sont relatifs aux chemins du script lui-même.
Le premier paramètre ($url_src) indique l’url relative de l’application SPIP sur le serveur.
Le second paramètre ($dsk_src) indique le chemin disque relatif à l’appli SPIP (normalement, c’est pareil).
Le troisième paramètre ($dsk_src) indique le chemin disque relatif à l’emplacement des fichiers html qui vont être générés (la copie statique du site). Attention ! tout fichier présent dans ce répertoire peut-être effacé par le script ; il convient donc de dédier ce répertoire à ce seul usage.
Le quatrième paramètre ($imglink) est le nom du répertoire d’image de SPIP. Il sera créé et copié dans le version statique du site.
Le cinquième paramètre est le nom d’un fichier de travail pour le script. Il n’est pas nécessaire de le modifier.
Le sixième paramètre est le nom de la page SPIP à lire, au démarrage de la conversion. Là encore, il ne faut normalement pas modifier ce paramètre.
A titre d’information, ci-joint le formalisme utilisé sur ce site :
"/" : racine du site
"/spip/" : pages du système de publication SPIP
"/spip/IMG/" : miniatures, images et documents gérés par SPIP
"/html/" : pages statiques (générées par le script)
"/css/" : feuilles de style, utilisées -à la fois- par les pages SPIP mais aussi les pages statiques html.
"/images/" : répertoire d’images gérées par le gestionnaire de site, et pas par spip lui-même.
Il suffit de placer le script à la racine du site, afin de pouvoir réaliser la conversion du site SPIP vers le site statique (cela prend plusieurs minutes). En cas de plantage du script, ne pas hésiter à le relancer (touche "refresh" (souvent F5) du navigateur). Le script gère ses états, et indique lorsqu’il a fini. Dans ce dernier cas, il propose même de pouvoir redémarrer. N’hésitez pas à le tester, quitte à le retirer ensuite (il ne modifie les données que dans le répertoire cible, à savoir "/html" ou tout autre selon la configuration).
Afin d’assurer une plus grande disponibilité du site, il est même possible de tester à l’entrée du site l’existence de la version statique du site (html), tout en permettant de se rabattre sur la version dynamique (spip/php) si elle n’existe pas (pas encore de compilation, ou compilation en cours).
Il s’agit d’un script php qui teste la présence du fichier "html/index.html". S’il le trouve, il redirige l’utilisateur vers cette page statique. Sinon, il renvoie vers le répertoire "spip". Le tout relativement au répertoire en cours (souvent, la racine).
(utilisez la fonction "enregistrer..." de votre navigateur pour sauvegarder sur votre disque, et pensez à retirer ensuite le .txt à la fin du nom de fichier)
Ce script peut-être appelé par une page d’accueil (ex : index.html), ou directement servir lui-même de page d’accueil (le renommer "index.html" et le placer à la racine du site).
Bon SPIP !