Lug 27

Wordpress non è una piattaforma famosa per essere particolarmente efficiente e performante. Di release in release il team degli sviluppatori si proccupano di fare tuning, sia a livello di codice che nell’interfacciamento a MySQL.

Nonostante questi sforzi, si può spremere qualcosa in più in termini di performance pure a Wordpress. Le strategie sono due:

  1. effettuare una copia statica delle pagine;
  2. cachare ed ottimizzare direttamente il codice php.

La premessa è che si possa avere il controllo del proprio web server: XCache non è un modulo standard di PHP, quindi bisogna installarlo. Vediamo come fare su Ubuntu/Debian.

  1. Loggatevi come root
  2. apt-get update
  3. apt-get install php5-xcache

A questo punto il modulo è installato e troverete il suo file di configurazione in /etc/php5/conf.d Aprite xcache.ini e settate i seguenti attributi

  • xcache.admin.user = “$vostro_user_name”
  • xcache.admin.pass = “$vostra_password_in_md5″
  • xcache.optimizer = On

Il grosso è fatto. Ma vogliamo avere sotto controlo il fuzionamento di XCache. Create un virtual host, per esempio xcache.vostrodominio.it con document root in /usr/share/xcache/admin/

Riavviate Apache e andate a controllare xcache.vostrodominio.it e loggatevi con nume utente e password specificati in xcache.ini (in questo caso la password va inserita ovviamente in chiaro). Dovrebbe essere tutto a posto.

Adesso occupiamoci di Wordpress. Scaricate il plugin XCache for Wordpress nell directory wp-content e scopattatelo. Aprite object-cache.php in un editor di testo e modificate le seguenti riche di codice:

//XCache Admin Username
$_SERVER["PHP_AUTH_USER"] = “$vostro_user_name”;
//XCache Admin Password
$_SERVER["PHP_AUTH_PW"] = “$vostra_password_in_chiaro”;

Fatto questo, riavviate Apache ed avete finito: questo plugin non ha bisogno di essere attivato.

Utilizzando Wordpress 2.6 ho percepito un miglioramento delle performace di 2,5 volte. Senza XCache la homepage di un blog in sviluppo che ho ustato per test veniva servita a 3,5 pagine al secondo; con XCache si è passati a 9 pagine al secondo.

Il resto dei tempi dovrebbero essere per la maggior parte accesso al database.

Mar 28

Work in progress…

Gen 27

Un paio di giorni da mi sono sentito abbastanza incosciente da aggiornare Wordpress: e 2.1 fu!

In generale l’esperimento é andato bene, il grosso del lavoro é stato verificare ogni plugin ed eventualmente aggiornare a versioni più recenti.

I cambiamenti più evidenti sono stati: la maggior velocità  di risposta dovuta al tuning del database, i raffinamenti dell’interfaccia di contribuzione.

L’unico problema in cui sono incappato é stato con FAlbum, per scoprire poi che era un difetto del tema.

Gen 25

Avevamo bisogno di applicare i tag anche alle pagine? Ultimate Tag Warrior per quanto sia un plugin eccellente assegnava i tag solo ai post.

Christine deve aver sentito il nostro urlo disperato fino in Nuova Zelanda, perché la nuova versione di UTW implementa i tag nelle pages di Wordpress!

Gen 24

Può essere interessante integrare Wordpress con le social web application per arricchire i contenuti del proprio blog o per sperimentare formule di marketing integrato.

L’obiettivo di questo esperimento é utilizzare Flickr in modo da avere una gallery contestuale ai contenuti del post. La denotazione contestuale la ricaviamo attraverso il tagging.

Abbiamo bisogno di installare e attivare due plugin di Wordpress:

Vi rimando alla documentazione dei rispettivi plugin per le procedure d’installazione e configurazione.

Una volta che siete certi che Ultimate Tag Warrior funziona ed avete taggato qualche post, si procede in questo modo. E’ necessario modificare il file ultimate-tag-warrior.php che trovate nella cartella /plugins/UltimateTagWarrior aggiungendo in coda la seguente funzione.


function UTW_GetTagsForCurrentPost() {
global $utw, $post;
$myTags = $utw->GetTagsForPost($post->ID);
$r = array ();
$i = 0;
foreach ($myTags as $myTag) {
$r[$i] = $myTag->tag;
$i++;
}
return $r;
}

UTW_GetTagsForCurrentPost() ha il semplicissimo compito di estrarre l’array di tags che abbiamo assegnato ad un post.

Fatto questo modifichiamo i nostri template. L’idea é che nel loop di Wordpress, vicino a post e tag, vengano estratte le immagini contestuali tratte da Flickr attraverso il plugin flickrRSS. Ecco l’esempio di codice.


<?php
if(count(UTW_GetTagsForCurrentPost()) > 0) {
$myTags = implode(",", UTW_GetTagsForCurrentPost());
get_flickrrss(6, "user", $myTags, "square", "", "", "IL_VOSTRO_ID_FLICKR");
get_flickrrss(6, "public", $myTags, "square", "", "", "");
}
?>

Il funzionamento anche in questo caso é semplice:

  • innanzi tutto verifico che il post abbia effettivamente dei tags,
  • poi concateno i tag delimitandoli con le virgole (come richiesto da flickrRSS,)
  • infine richiamo flickrRSS per stampare le immagini.

Vi rimando al sito di flickrRSS per la documentazione e le possibilità  della funzione.

Gen 24

A proposito dell’integrazione con le social web application.
Stiamo lavorando sull’integrazione dinamica di post+tags+Flickr in Wordpress: l’obiettivo é fare in modo che post e page possano avere una propria gallery dinamica sulla base dei tag inseriti. Il motivo é sfruttare al meglio il modello blog marketing + social.
I plugins di base sono:

Ho fatto notare a Matteo che, da esperimenti precedenti, non mi risultava fosse possibile estrarre una ricerca utilizzando più di un tag: solo uno, limitazione delle API di Flickr. Un modo per aggirare la limitazione é utilizzare il plugin flickrRSS, che in realtà  non si appoggia alle API ma richiede un feed.

Non l’avessi mai detto, “Non é possibile!”: Matteo si é vestito del sacro furore dello sviluppatore e si é messo a dar craniate alla rete, alle API di Flickr, ai feed, a Wordpress… a tutto quello di PHPoso gli passasse sottomano.

Gen 23

Rilasciata la nuova versione stabile di Wordpress: 2.1.

Apprezzabile l’ottimizzazione delle query MySQL, versante un po’ debole della piattaforma. Piccolo slancio polemico: nuova feature, come segnalato nelle release notes, o bug-fix? Io propendo per la seconda interpretazione.