Worpdress - Un simple système de cache avec memcache

Auparavant, j'utilisais wp-super-cache pour mettre en cache les pages de geekndev. Mais il s'avère qu'en basculant le blog sur un kimsufi (config serveur différente du précédent serveur, donc), j'obtenais, souvent, des erreurs 500, inexplicables (rien dans les logs apache, et pas de changement en vidant wp-super-cache, et les erreurs 500 étaient aléatoires).

Et je me suis aperçu qu'au final, le contenu le plus dynamique d'un blog wordpress, ce sont les commentaires. Or, disqus les affiche et les gère en JS. Donc, geekndev présente un contenu très facilement cachable.

Et wp-super-cache s'avérait trop lourd pour cacher ce contenu très simple à cacher. Je me suis donc dit: et si je cachais moi même les pages, sans passer par un plugin ?

La logique est simple: lorsque l'utilisateur visite une page, il faudrait vérifier si la page n'est pas déjà cachée. Deux possibilités :
1) la page est présente en cache => On affiche la version cachée.
2) la page n'est pas présente en cache => on la cache et l'affiche.

J'ai donc modifié le fichier index.php de wordpress de la manière suivante :

Avant le bloc :
[sourcecode language=php]
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/
[/sourcecode] (en début de fichier, donc)
J'ai ajouté :

[sourcecode language=php]
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$key = 'gnd_'.md5($_SERVER['REQUEST_URI']);
$memcachedData = $memcache->get($key);
if($memcachedData)die($memcachedData.'');
ob_start();
[/sourcecode]

En fait, nous allons récupérer tout le contenu affiché avec le système ob_start() / ob_get_clean()

En fin de fichier, j'ai ajouté :

[sourcecode language=php]
$content = ob_get_clean();
if(!defined('timeExpires'))define('timeExpires', 86400);
$memcache->set($key, $content, false, timeExpires) or die($content.'');
die($content.'