Installare WP-Cache su Windows e IIS

WP-Cache è un ottimo plug-in per velocizzare WordPress, effettuando la cache delle pagine già servite in precedenza. Purtroppo non è ben progettato per IIS: dopo averlo installato, la pagina di amministrazione risulterà bianca, quando invece dovrebbe auto-configurarsi e mostrare delle opzioni.

Per renderlo funzionante su Windows ed in particolare IIS, è necessario effettuare alcune modifiche ai sorgenti e successivamente procedere alla configurazione manuale.

Modifiche ai sorgenti

Nel file /wp-content/plugins/wp-cache/wp-cache.php, dalla riga 491, la funzione wp_cache_check_link utilizza dei link simbolici.

function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;

if ( basename(@readlink($wp_cache_link)) != basename($wp_cache_file)) {
@unlink($wp_cache_link);
if (!@symlink ($wp_cache_file, $wp_cache_link)) {
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
}
return true;
}

I link simbolici non sono implementati in Windows, e vanno quindi rimosse le funzioni symlink e readlink. Consiglio di effettuare un semplice controllo sull’esistenza del file advanced-cache.php.

function wp_cache_check_link() {
global $wp_cache_link, $wp_cache_file;

if(!file_exists($wp_cache_link))
{
echo "<code>advanced-cache.php</code> link does not exist<br />";
echo "Create it by executing: <br /><code>ln -s $wp_cache_file $wp_cache_link</code><br /> in your server<br />";
return false;
}
return true;
}

Sempre nello stesso file, si utilizza la costante __FILE__

add_options_page('WP-Cache Manager', 'WP-Cache', 5, __FILE__, 'wp_cache_manager');

Questo può causare alcuni problemi con le barre rovesce dei percorsi, per cui consiglio di fornire solo il nome del file, dato che WordPress è in grado di ricostruire comunque il percorso corretto del plug-in.

add_options_page('WP-Cache Manager', 'WP-Cache', 5, basename(__FILE__), 'wp_cache_manager');

Nel file /wp-content/plugins/wp-cache/wp-cache-phase1.php, alla riga 23, si fa uso della variabile $_SERVER['REQUEST_URI'] che purtroppo in Windows contiene solo parte del permalink.

$key = md5($_SERVER['SERVER_NAME'].preg_replace('/#.*$/', '', $_SERVER['REQUEST_URI']).wp_cache_get_cookies_values());

Il valore corretto lo otteniamo concatenando $_SERVER['SCRIPT_NAME'] e $_SERVER['PATH_INFO']

$key = md5($_SERVER['SERVER_NAME'].preg_replace('/#.*$/', '', $_SERVER['SCRIPT_NAME'].$_SERVER['PATH_INFO']).wp_cache_get_cookies_values());

Per lo stesso motivo è da sistemare il file /wp-content/plugins/wp-cache/wp-cache.php, sostituendo tutte le occorrenze di $_SERVER['REQUEST_URI'].

echo '

';

In questo caso utilizziamo una soluzione standard, usata anche in altri plug-in, per indicare la pagina corrente.

echo '

';

L’operazione deve essere ripetuta su tutto il file, alle righe 253, 272, 305, 329, 351, 556, 590, 605 e 613.

Configurazione manuale

Dopo aver eseguito le modifiche ai sorgenti, è possibile procedere alla configurazione del plug-in

  • Copiare rinominandolo il file /wp-content/plugins/wp-cache/wp-cache-phase1.php in /wp-content/advanced-cache.php
  • Creare la cartella /wp-content/plugins/cache
  • Concedere i diritti di scrittura a IIS alla cartella /wp-content. Dopo la configurazione, sono sufficienti i permessi per la cartella /wp-content/plugins/cache e /wp-content/plugins/wp-cache ed il file /wp-content/wp-cache-config.php.
  • Modificare il file wp-config.php aggiungendo una costante
    define('WP_CACHE', true);

A questo punto, per far entrare in funzione il plug-in, non resta che accedere alla pagina di amministrazione, dove dovrebbero essere comparse tutte le opzioni di configurazione, ed attivare la cache con l’apposito pulsante.

Fonti di riferimento