Ogni tanto bisogna pensare anche alle
revenue. Questo testo
fa il paio con lo straordinario
High Performance Web Sites, aggiungendo agli argomenti tecnici relativi alle prestazioni quelli legati alla visibilità nei motori di ricerca, alle campagne
pay-per-click, alle metriche. Il testo è ordinatamente diviso in due parti, che l'autore destina, l'una alle figure manageriale l'altra a quelle tecniche; a mio parere è possibile anche invertire i destinatari, ovvero consigliare agli sviluppatori web la lettura della prima parte sugli argomenti di marketing e SEO (
Search Engine Optimization), ed ai manager quella della seconda parte, sull'ottimizzazione delle prestazioni. Il capitolo finale sulle metriche di ottimizzazione è da considerare il
trait d'union fra le due
anime del libro.
Il
primo capitolo introduce, attraverso dieci
semplici regole, l'argomento dell'ottimizzazione del proprio sito per i motori di ricerca; alcuni dei servizi suggeriti, come
Wordtracker e la sua
versione gratuita, sono ben poco utili per il mercato italiano; altri, come
Marketleap, offrono invece una serie di tool (anche gratuiti) di benchmarking e piazzamento nei motori di ricerca, che possono essere utilizzati con profitto anche dall'utente italiano. Un box finale, ormai
outdated, è dedicato all'uso dei metadati e, con un po' di fantasia, al Web semantico; viene fatto un cenno anche a quella che sarebbe diventata la
Yahoo! Site Explorer API.
Il
secondo capitolo è interamente dedicato ad un caso di studio sull'ottimizzazione per i motori di ricerca,
Philadelphia Dentistry; mostra alcuni dei suggerimenti del capitolo precedente all'opera, ma ovviamente, essendo un lavoro dell'Azienda che fa capo all'autore, i risultati sono da prendere
cum grano salis. La cosa forse più interessante, in prospettiva, è la segnalazione degli
Yellowpipe Internet Services. Il
terzo capitolo è dedicato alle campagne
pay-per-click, con continui riferimenti all'onnipresente
AdWords; sbagliereste però a saltarlo a piè pari se non avete un budget per la promozione del vostro sito, vista la presenza di utili paragrafi come quelli destinati all'arte della scelta delle keyword. Oltre al servizio di Google, continuamente usato come riferimento, vengono citati, a titolo comparativo, i due principali competitor,
Yahoo! Search Marketing e
Microsoft adCenter.
Viene sottolineata l'importanza di un tool come
AdWords Editor, che consente una facilità di gestione incomparabile rispetto ai fogli Excel tradizionalmente usati nel PPC marketing (anche se
Microsoft adCenter offre un
add-in per Excel 2007 con funzionalità simili), e del suo
compagno Google Analytics. Di converso, l'Editor presenta maggiori difficoltà nella gestione integrata di
ad group, keyword ed ads, superabili solo con un'API che Google offre a pagamento, laddove entrambi i competitor offrono gratuitamente la propria.
Microsoft adCenter offre, inoltre, un tool per l'importazione di campagne precedenti ai nuovi account. Un avvertimento (che del resto dà anche l'autore) è che la lettura di questo lungo capitolo presuppone che abbiate un minimo di esperienza con il
pay-per-click; non troverete alcun paragrafo del tipo
Google AdWords Quick Start Guide. Il brevissimo
quarto capitolo è un altro caso di studio,
Body Glove, sul PPC; anche in esso non troverete alcuna procedura operativa, ma molte indicazioni pratiche.
Il
quinto capitolo è dedicato alla
Conversion Rate Optimization (CRO), ovvero all'aumento della percentuale di visitatori che effettuano un'azione che ha un
valore (acquistano un prodotto, usufruiscono di un servizio, e così via). Com'è facile immaginare, è un capitolo più
qualitativo che
quantitativo, tutto incentrato su tecniche di persuasione che ruotano intorno a due cardini principali: la stesura di contenuti (in inglese
copywriting) ed un design delle pagine web che dia
credibilità a ciò che proponiamo al visitatore. È da tenere presente che anche in questo capitolo l'attenzione è per i siti con un'offerta commerciale, e per di più il discorso è inevitabilmente orientato verso la cultura statunitense; l'autore avverte comunque di continuo quando è il caso di
trasgredire le regole in dipendenza dal proprio pubblico di riferimento: è del tutto inutile, per esempio, usare frasi da tele-imbonitore sul sito di un ente di ricerca.
La
seconda parte, dedicata alla minimizzazione del tempo di caricamento delle pagine web (il secondo fattore in grado di attirare gli utenti, dopo l'attrattività del sito), è, inutile negarcelo, quella che il
tecnarca leggerà più volentieri. Un breve cappello introduttivo, ricco di dati di ricerca,
dimostra come
sia oggi inaccettabile una home page che impiega più di quattro secondi per caricarsi; il dato va pesato, per esempio, con la diversa diffusione della banda larga negli States piuttosto che in Italia, ma rimane comunque indicativo. Dimenticate, anche, ogni velleità di ridurre il
peso dell'HTML, magari creando la ben nota
pagina cover (uno dei modi migliori per rendere il vostro sito invisibile ai motori di ricerca); oggi come oggi, la velocità di caricamento la fanno le dipendenze ed il limitato parallelismo fra gli oggetti della pagina (JavaScript, CSS, Flash, file multimediali in genere…).
Il
sesto capitolo, che fornisce una panoramica generale, incentrata intorno a dieci tecniche, del problema dell'ottimizzazione, deve molto al già ricordato
High Performance Web Sites, del resto citato esplicitamente tra le fonti. Una caratteristica di questo capitolo è quella di nominare molti software a pagamento - anche ottimi, come
JPEG Wizard, l'unico programma in grado di effettuare una compressione senza perdita delle JPEG;
BrowserCam per simulare la visualizzazione in più browser e piattaforme; o
w3compiler, un ottimizzatore di file JavaScript, CSS ed HTML - ma poche alternative gratuite.
Rispetto al testo di
Souders,
King dedica una maggiore attenzione all'ottimizzazione dei file multimediali; in particolare, il più lungo dei paragrafi è dedicato all'
ottimizzazione dei file video, con una delle rare guide passo-passo del testo, per
Quick Time Pro. Viene ricordato, continuamente, come
la strutturazione della pagina tramite CSS aiuta l'indicizzazione da parte dei motori di ricerca, mentre francamente ci sono ottime alternative
server-side al prodotto
BrowserHawk suggerito per il riconoscimento del browser dei visitatori. In chiusura, è da segnalare
Widget Enabled DOM JavaScript Embedding (WEDJE) per il caricamento asincrono degli ormai popolarissimi widget.
I successivi tre capitoli approfondiscono in maniera specialistica il discorso dell'ottimizzazione: il
settimo è dedicato a quella dei CSS, l'
ottavo a JavaScript, il
nono a come ritardare il caricamento degli script, in modo che non interferisca con la visualizzazione dei contenuti della pagina. Il
settimo capitolo usa la consueta struttura delle
dieci tecniche ma, soprattutto, sottolinea come
l'ottimizzazione dei CSS ha senso solo se usata insieme ad un'architettura della pagina HTML basata sui CSS, non sulle consuete tabelle. Tra l'altro, alcune tecniche (come l'uso degli
shorthand CSS) permettono un risparmio di byte che ha senso solo per siti ad alto traffico (e però aiutano a mantenere il codice CSS compatto), altre, come l'uso di classi multiple a scopo di
normalizzazione o i
selettori di attributo, presentano una serie infinita di problemi di compatibilità
cross-browser. La tecnica probabilmente più utile, ma anche di più complessa applicazione, è l'ultima, ovvero l'uso dei CSS per rimpiazzare i
behavior CSS (un caso classico è il passaggio del mouse su un'immagine).
L'
ottavo capitolo affronta JavaScript dal punto di vista della tecnologia, che ne ha segnato la rinascita: AJAX. Come ogni accattivante novità, AJAX viene spesso adottato con entusiasmo, ma senza tenere conto dei problemi che può comportare il suo uso
sconsiderato: problemi di accessibilità (anche agli spider di indicizzazione dei motori di ricerca); dipendenza dalle condizioni della rete; perdita delle funzionalità del pulsante
Back e dei bookmark dei browser.
King illustra varie soluzioni
from scratch, ma ha il merito di sottolineare continuamente come l'
affidarsi ad una delle tante librerie disponibili (vengono citate ad esempio
Prototype,
jQuery,
Dojo e
YUI)
semplifica di molto il lavoro. Dopo una breve introduzione alle caratteristiche di AJAX vengono discussi per l'appunto i criteri di scelta di una libreria per i propri scopi. Segue una lunga parte dedicata all'
ottimizzazione del codice JavaScript; allo
shrinking di ogni byte possibile (almeno per la versione di produzione!) tramite l'eliminazione di commenti e spazi, l'
uso di shorthand e macro, il
remapping degli oggetti del browser, l'uso delle
funzioni anonime e così via.
Una parte che culmina con il box dedicato ai
tool automatici di compressione, ed in particolare a
YUI Compressor,
Dojo ShrinkSafe ed al servizio online
Dean Edwards' Packer (disponibile anche come
applicazione .NET, PERL, PHP e WSH). Tra parentesi,
Dean Edwards è un nome che incontrerete spesso, lavorando con JavaScript. A meno di non usare (a vostro rischio e pericolo, nel caso di librerie invocate dall'esterno) delle impostazioni particolarmente
aggressive, non otterrete nulla di più di quanto otterreste con un semplice tool a linea di comando come
JSMin (stranamente non citato da
King). Tornando alle librerie, molti framework fortunatamente sono disponibili in una versione di produzione già minimizzata, alcuni forniti anche tramite CDN come nel caso di Yahoo! e Google; cosa non citata da
King,
forse non tutti sanno che di
Prototype/Script.aculo.us esiste una
versione shrinked, comprensiva di tutti i moduli e che
pesa meno di 50 KB.
Il
monitoraggio del rendering all'utente finale (con tool come
Firebug,
Fiddler o il
Nikhil's Web Development Helper) è una pratica spesso trascurata, così come la
garbage collection piuttosto che la prevenzione dei
memory leak. Ancora, molti non tengono in conto il limite intrinseco di HTTP 1.1 delle due connessioni contemporanee ad un dominio (limite che però
sarà superato da Internet Explorer 8); un limite di parallelizzazione delle
request AJAX, che non può essere superato moltiplicando il numero dei domini serventi, vista la
Same-Origin Policy (fortunatamente, visti i problemi di sicurezza che questo creerebbe). Ancora, per una tecnologia che basa il suo successo sulle richieste asincrone, è sin troppo facile creare problemi di dipendenza fra una richiesta e l'altra.
Sul
formato di scambio dei dati sono oramai in pochi a
difendere l'XML originario contro l'
onda che monta di
JSON, ma concettualmente suona come l'uovo di Colombo un pattern come
AJAH (Asynchronous JavaScript and HTML), ovvero restituire alla richiesta AJAX direttamente l'HTML da incorporare nella propria pagina. La parte finale del capitolo affronta i problemi più spinosi, quelli che richiedono le soluzioni architetturali più ingegnose: il
caching, la gestione degli errori (in special modo quelli di connessione di rete), il
polling e, non ultimo, il salvataggio dello stato, gestito tramite un pattern, la
location hash technique, che l'Autore ha affrontato in un altro suo libro,
AJAX: The Complete Reference.
Il
nono capitolo affronta alcune tecniche di ottimizzazione avanzate, la maggior parte delle quali
server-side (miglioramento del parallelismo dei download;
caching; compressione HTTP,
delta encoding,
URL rewriting con
mod_rewrite) e dunque di solito non praticabili da chi usufruisce di un servizio di hosting. Come testo di approfondimento,
King consiglia
Web Performance Tuning: Speeding Up the Web, sempre di O'Reilly, per quanto sia un testo che ha ormai qualche anno. Sul miglioramento del parallelismo c'è poco da dire: si basa tutto sull'uso di alias
CNAME nel DNS - HTTP 1.1 ha un limite massimo di due connessioni per dominio, ma i browser si basano sugli hostname, non sugli indirizzi IP - trovando il compromesso fra miglioramento del parallelismo ed
overhead dovuto ai
DNS lookup.
Il paragrafo sul
caching descrive fondamentalmente tutte le varie opzioni disponibili in Apache, con una parentesi su
mod_cache e sulla configurazione degli header in IIS. Può essere utile verificare com'è impostata la cache per il proprio sito usando il
Port80 Software's Cache Check tool. La compressione HTTP è tutta incentrata sull'uso di
mod_gzip e
mod_deflate (e sugli
equivalenti per IIS), ma trova spazio anche la
delta encoding, una parte delle specifiche HTTP 1.1 descritta nella
RFC 3229, che ha finora trovato poco spazio nei browser, con la notevole eccezione dei feed RSS.
L'uso di una
Content Delivery Network (CDN), ovvero di una rete di web server distribuita geograficamente, che fornisce contenuti all'utente sulla base della vicinanza geografica, è stata tradizionalmente riservata alle realtà medio-grandi; il leader indiscusso in questo campo è
Akamai, con l'80% e passa del mercato. Il testo cita tuttavia due notevoli eccezioni accademiche,
CoralCDN e
CoDeeN, il cui uso è addirittura gratuito, a patto di modificare i propri indirizzi con un
URL rewriting. Proprio questo argomento è oggetto delle successive due pagine, con una presentazione di
mod_rewrite, che di certo non esaurisce l'argomento. Il testo si concentra sulla riduzione del payload HTTP derivante dall'
accorciare gli URL ma, tradizionalmente, questa tecnica serve soprattutto ad aumentare la SEO dando un nome
significativo agli URL senza perdere i vantaggi derivanti dalla creazione dinamica dei contenuti nei CMS.
Come accennavo all'inizio, nel capitolo trova spazio una seconda parte dedicata all'
ottimizzazione delle prestazioni lato client. La strategia che
paga, e parecchio, in questo campo è sicuramente il caricamento ritardato degli oggetti nella pagina, soprattutto di JavaScript, almeno fino a quando non sarà stato completato il processo della sua riscrittura come linguaggio
multi-threaded iniziata con
Google Gears. Si tratta, in ogni caso, di tecniche difficilmente implementabili
in casa in maniera
cross-browser e in cui le librerie la fanno da padrone; ampio spazio viene dedicato a
quella di David Artz mentre, stranamente, meritano solo una citazione due ottime librerie per il caricamento ritardato dei file JavaScript come
Ajile e
LazyLoad. Infine, una tecnica come le
inline images, ovvero l'inclusione delle immagini in formato binario direttamente nella pagina HTML tramite i Data URI descritti nella
RFC 2397, ha davvero senso solo se il traffico del proprio sito è tale da giustificare le ottimizzazioni più spinte.
Il
decimo ed ultimo capitolo è il
trait d'union fra le due anime del testo, con la trattazione delle metriche per il Web. L'intero capitolo ruota intorno ad una
scorecard, disponibile per il download sul sito companion del testo, che riassume una serie di metriche, dettagliatamente descritte, ma tutte racchiuse in un unico, straordinario tool: il formidabile
AOL Pagetest. Si tratta davvero di un tool che rende sorpassati tutti gli altri. Dimenticate pure
Charles, dimenticate l'
IBM Page Detailer, dimenticate anche un
Firebug che non è in grado nemmeno di distinguere fra tempi di risposta del client e del server ed al quale solo
YSlow riesce a dare un minimo di dignità come tool di misurazione delle prestazioni (dal punto di vista dello sviluppo, i
Developer Tools di Internet Explorer 8 gli hanno già scaraventato una pietra tombale sopra):
AOL Pagetest è tutto quello che vi serve; lascia davvero a bocca aperta come abbia racchiuso in due report grafici e due testuali tutto il lavoro di ottimizzazione da compiere su un sito.
Per il resto, il capitolo presenta vari tipi di software per l'analisi web, distinguendo ordinatamente fra i
tradizionali analizzatori dei log del web server e quelli basati sul JavaScript
tagging (con qualche nota di merito per
Google Analytics), e dedica una particolare attenzione all'analisi multivariabile con
Google Website Optimizer (un tool comunque legato a
Google Analytics, tanto che è necessario avere un account di quest'ultimo per utilizzarlo) ed al test dell'esperienza utente con
Keynote Systems' WebEffective. Si chiude con un caso di studio su Dig, e con qualche breve nota su alcuni tool di monitoraggio commerciali: i leader in questo campo sono la già citata
Keynote Systems e
gomez.