Les blogs à haute fréquentation sous WordPress ne rendent pas la vie facile au webmaster… Car quoi qu’on en dise, WordPress possède plein davantage sauf celui d’être économique en terme de performances.
Pour y remédier, une solution simple et peu couteuse à mettre en place consiste à installer le plugin WP Super Cache, de mon ami Donncha. (mainteneur de WPmu au passage)
Malheureusement, il se trouve que le plugin bien que très efficace provoque un bug assez aléatoire.
Pour comprendre la source du bug, petit rappel technique sur le fonctionnement de WP Super Cache.
- Un visiteur consulte une page X
- Si la page n’est pas en cache, WP Super Cache créé 2 copies :
- 1 exemplaire HTML
- 1 exemplaire compressé Gz
- Le visiteur suivant, qui consulte la même page X, va vérifier la présence d’une copie.
- Dans un premier temps, la copie compressée Gz
- Dans un second temps, la copie HTML
- Sinon, il charge WordPress pour créer la copie (on revient au point 2)
- Et ainsi de suite.
Petite précision, mais pas importante ici, les copies HTML et Gz ont une durée de vie. Cette dernière est spécifiée dans les options du plugin. Une fois la durée dépassée, les 2 copies sont supprimées pour obliger une nouvelle création.
Revenons au bug, il est assez simple. Lors de la première consultation, WP Super Cache va créer une copie compressée avec Gzip, malheureusement avec la version actuelle (0.7.0.1), il ne vérifie pas l’intégrité de l’archive.
De ce fait, il lui arrive de créer aléatoirement des archives corrompues. On tombe alors sur des pages comme:
Pour éviter ce bug, tout en profitant du cache HTML classique de WP Super Cache, rien de plus simple… Il suffit de désactiver la compression GZ dans les options du plugin.
Cependant pour des raisons assez mystérieuses, le bug se reproduit par moment. Pour être sur que le bug ne se reproduit, je vous conseille de désactiver la redirection du fichier .htaccess concernant la compression Gz.
C’est-à-dire les lignes suivantes:
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*s=.*
RewriteCond %{QUERY_STRING} !.*p=.*
RewriteCond %{QUERY_STRING} !.*attachment_id=.*
RewriteCond %{QUERY_STRING} !.*wp-subscription-manager=.*
RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]
En supprimant cette partie, vous pouvez être sûr que les pages avec hiéroglyphes, c’est terminé !
2 réponses à “WP Super Cache et le bug de la compression Gzip, solution temporaire”
Sur tes conseils j’avais déjà désactivé la compression et maintenant je viens de mettre les lignes en question en commentaires : l’art moderne, oui, sur ma page, non ! ;)
Bonsoir,
La version 0,8 corrige t-elle ces bugs ?
je cherche à optimiser au max, je suis déjà
passé par une retouche du code du header et footer
(lien clair de suite)
Ayant pour objectif de transformer mon blog
en site complet, il me faut de la vitesse,
je sais déjà qu’un temps de chargement trop
long pousse à l’abandon ;)
Jérémy