Programmazione.it
Website Optimization
Recensito da Paolo De Nictolis il 28-10-2008 ore 07:54
Copertina ISBN: 0596595089
Autori: Andrew B. King
Editore: O'Reilly
Lingua: Inglese
Anno: 2008
Pagine: 368 + XXIV
Allegati: Nessuno
Intel Parallel Amplifier 2011
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.
proUn testo ricco di consigli pratici, con un ottimo sito companion.
controAlcuni suggerimenti sono legati in maniera indissolubile al mercato anglosassone ed a siti commerciali.
Copyright Programmazione.it® 1999-2005. Tutti i diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002.