SPIP : performances
Inutile de présenter ici spip. Ce désormais célèbre gestionnaire de sites webs est à présent utilisé par les plus grands.
Méthodes "Usuelles" d’optimisation de Spip
Plusieurs méthodes sont déja bien connues par améliorer les performances de spip : désactiver les statistiques, simplifier ses squelettes si possible, etc..
Ces solutions sont limitées dans leur efficacité car elles ne remettent pas en cause le principe de fonctionnement de spip : les pages sont interprétées, et chaque requête génère des accès à la base SQL.
Nous vous proposons ici une solution originale permettant de maximiser les performances de votre site réalisé avec SPIP.
Garder SPIP pour l’édition, et profiter des performances d’un site statique
L’intérêt de SPIP, c’est sa facilité d’utilisation et son respect des standards du web. À moins de disposer d’un site de commerce, peu de webmestres ont besoin que les accès à leurs pages web fassent l’objet de connexions à leur base de données à chaque requête. En résumé, un grand nombre de sites pourraient tourner en mode "statique".
Pour ce faire, nous changeons légèrement l’architecture de fonctionnement de notre site web. Nous allons définir un serveur de développement, sur lequel tourne Spip, et un serveur de production, qui est le serveur public, et dont le contenu est statique. Le document joint ici décrit cette architecture.
Nous allons partir de l’idée que vous souhaitez migrer votre site en production sous Spip vers un site statique, tout en continuant de le mettre à jour par spip.
Dans tous les cas, réalisez avant de commencer une sauvegarde complète de votre site web ! Vous réalisez bien sûr toutes ces manipulations à vos risques et périls, sous votre propre responsabilité !
Étape zéro : disposer d’URLs statiques sous SPIP
Ceci est une fonctionnalité de SPIP 1.8.X, qui permet de disposer d’URLs statiques pour votre site, de manière complétement transparente pour les visiteurs. La documentation de Spip décrit comment réaliser cela. Ceci est nécessaire, sinon les URLs de notre nouveau site seront parfaitement insipides.
Première étape : dupliquer son site SPIP
Réalisez une copie de votre site sous Spip. C’est très simple : faites une sauvegarde de votre site existant, créez un nouveau site sous spip (par exemple dans un VirtualHost apache, ou sur une autre machine), et faîtes une restauration de la base sur ce nouveau site. Le nouveau site sera votre site de développement, vous y réaliserez vos modifications, vos rédacteurs y géreront le contenu.
Pensez à copier également les fichiers squelettes, et les fichiers CSS si vous les avez modifiés.
Deuxième étape : mettre en place le contenu statique
L’excellent outil httrack va nous permettre de générer une "photo" de notre site de développement et de la déployer sur le site de production.
Pour réaliser la copie de notre site, faire :
httrack sitededev.com -d --connection-per-second=1 --footer ""
Vous récupérez directement, en local sur la machine où vous avez lancé httrack, une copie du site de développement.
Si vous utilisez la syndication, récupérez le fichier backend.php3 :
wget http://sitededev/backend.php3 -q -O -|sed 's/sitededev/sitedeprod/' > backend.xml
et ajoutez dans votre fichier .htaccess :
RewriteRule ^backend\.php3 /backend.xml [L]
Effacez complétement SPIP du site de production, et copiez cet ensemble de fichiers sur le site de production, et le tour est joué ! N’oubliez pas les fichiers CSS et éventuellement le contenu non-spip du site, si vous l’aviez effacé.
Compatibilité des anciens URLs
Si votre site était référencé sur les moteurs de recherche, et faisait l’objet de liens de la part d’autres sites, sur l’ancien fonctionnement (URLs de type http://www.monsite.com/article.php3 ?id_article=...), vous souhaitez conserver la compatibilité de ces URLs avec le nouveau site. Ceci est réalisable simplement, au moyen du script présent en attachement en bas de cette page.
Ce script shell, qui nécessite que l’utilitaire ’nc’ soit installé, permet de générer un fichier .htaccess qui réécrit les anciens URLs sur les nouveaux. Éditez le script, et modifiez les premières lignes, notamment le nom d’hôte à visiter. Positionnez ce champ sur le nom de votre site de développement. Le script va visiter tous les URLs connus et générer le contenu .htaccess sur sa sortie standard. Vous aurez probablement à ajouter au début du fichier .htaccess quelque chose comme
RewriteEngine On
Mises à jour ultérieures du site
Il suffit de répéter la deuxième étape quand vous le souhaitez. Votre site de production se trouve ainsi mis à jour facilement.
Limitations de cette solution
Le site obtenu est complétement statique : certaines fonctions de spip, comme les sondages ou le moteur de recherche, ne fonctionneront plus. Ces fonctionnalités ne sont pas utilisées par tous les webmestres, si bien que notre solution reste applicable dans un certain nombre de cas.
Avantages de ce changement
Avant tout, ce changement vise à améliorer les performances de SPIP. Si votre site est lent et que vous réalisez ce changement, vous verrez les temps de réponse diminuer de manière énorme : il est beaucoup moins consommateur pour un serveur Web de servir des fichiers plats, que de réaliser des accès à des bases de données, interpréter du PHP à chaque requête.
En terme de sécurité, cette solution présente également un gros avantage : le contenu statique est certifié imperméable aux attaques web de type injection SQL, aux vulnérabilités PHP, etc. Dans l’hypothèse où de telles vulnérabilités existeraient dans Spip, ou dans le language PHP lui-même, la copie de votre site Spip, en statique, est, elle, complétement immune et sécurisée (et au contraire, ce n’est pas le cas de votre site de développement, bien sûr).

