Ottimizzazioni: ridurre le richieste HTTP
webmaster: 28/04/09 @ 13:55Ero a conoscenza da tempo del trucco di unire tante piccole immagini in una più grande, ma ho deciso di prendere questa tecnica sul serio solo quando ho trovato quest'articolo sugli sprites (il nome di questa tecnica è presa dai videogiochi a 8bit).
Se cliccate sull'icona RSS in cima a questo post vedrete che si apre un layer contenente altre 9 icone: davvero tante, specialmente se si pensa che queste vengono caricate più volte, su quasi tutte le pagine del sito. Ho deciso quindi che questo fosse il target ideale per un test.
Unendo le immagini in una sola, la prima cosa che ho notato è che il peso dell'immagine più grande era di molto inferiore alla somma dei pesi delle singole immagini. Non so come mai l'immagine grande sia di 3KB, mentre le altre immagini messe insieme pesino 10KB: forse sarà dovuto da qualche ottimizzazione del programma grafico, ma il risultato è eccezionale. Se non fosse che l'obiettivo era diverso, sarei già contento con quanto abbiamo ottenuto.
Una volta creata l'immagine il codice è piuttosto semplice. Dal punto di vista CSS ho creato una classe che contiene gli attributi delle immagini e un'altra classe per ogni immagine che contiene solo le coordinate dell'immagine. L'idea è di non dover ripetere gli attributi per ogni immagine e quindi risparmiare un altro po' di banda:
background:url(/images/sprite_icons.png) left no-repeat;
height:16px;
padding-left:25px;
margin-top:4px;
cursor:pointer; /*ie*/
text-decoration:underline;
}
.image1{
background-position: 0px 0px;
}
.image2{
background-position: 0px -16px;
}
.image3{
background-position: 0px -32px;
}
Quando voglio chiamare una di queste immagini uso il seguente HTML:
Qui sotto un esempio di uno sprite:
Commenti: 8
Post precedente
Ancora ottimizzazioni: comprimere i file JavaScript e C...
Post successivo
Phoenix - estensione per Firefox - rilasciata
I commenti dei lettori:
Veramente interessante!
a breve voglio pubblicare i risultati di tutte queste ottimizzazioni
Se cerchi l'ottimizzazione più spinta e usi spesso le PNG dai un'occhiata a
questo:
http://entropymine.com/jason/pngrewrite/
scaricato. appena ho un attimo lo testo
non male davvero. il mio test ha dato riduzioni attorno al 10%
le immagini che ho usato ocme test sono piccole quindi i guadagni, anche
sommandoli, sono sotto 1k, ma er immagini che non cambiano mai potrebbe essere
un'idea.
ho anche provato a mettere pngrewrite contro un pngcrush, ma pngrewrite si è
dimostrato molto superiore:
http://pmt.sourceforge.net/pngcrush/
ho trovato pngout, quello che pare essere un ottimo compressore per file png:
http://advsys.net/ken/utils.htm
non ho effettuato un benchmark con pngrewrite, ma il fatto che esista una gui
che permette di comprimere un'intera cartella di immagini in una volta sola è
qualcosa di davvero molto comodo.
http://brh.numbera.com/software/pnggauntlet/
Se quello che ti serve è il ridimensionamento di tutti i file in una cartella lo
fai pure da linea di comando, anzi è più comodo perché in un certo senso puoi
gestire più cose (tipo mettere un prefisso o una desinenza alle PNG ricalcolate,
modificare solo quelle che hanno determinate parole nel nome ecc.).
Basta solo giocare un po' coi comandi batch
dylan, putroppo il tuo non sono riuscito a farlo funzionare quindi ne ho modificato un altro che ho trovato su internet