Site icon Noir Solutions

Mod gzip e dflate per velocizzare le prestazione del tuo sito o blog

La compressione è un modo semplice ed efficace per risparmiare larghezza di banda e la velocità del sito. Ho esitato nel raccomandare la compressione gzip quando accelerare il javascript a causa di problemi in browser meno recenti .

Ma è il 21 ° secolo. La maggior parte del mio traffico proviene da browser moderni, e francamente, la maggior parte dei miei utenti sono abbastanza tech-savvy. Non voglio rallentare tutti gli altri giù perché qualcuno sta chugging lungo su IE 4.0 in Windows 95.Google e Yahoo uso la compressione gzip. Un browser moderno è necessario per usufruire dei contenuti web moderno e velocità web moderno – così la codifica gzip è.Ecco come impostarlo.

Aspetta, aspetta, aspetta: Perché stiamo facendo questo?

Prima di iniziare vorrei spiegare che cosa è la codifica del contenuto. Quando si richiede un file come http://www.yahoo.com/index.html , parla del tuo browser a un server web.La conversazione va un po ‘come questo:

1. Browser: Hey, GET me / index.html
2. Server: Ok, fammi vedere se index.html è in giro …
3. Server: Trovato! Ecco il tuo codice di risposta (200 OK) e sto inviando il file.
4. Browser: 100KB? Ahi … in attesa, in attesa … ok, è caricato.

Naturalmente, le intestazioni reali e protocolli sono molto più formale (per controllare le modalità in diretta HTTP Headers se siete così inclinato).

Ma ha funzionato, e avete ottenuto il vostro file.

Allora qual è il problema?

Beh, il sistema funziona, ma non è così efficiente. 100KB è un sacco di testo , e, francamente, HTML è ridondante. Ogni <html>, <table> e <div> tag abbia un tag di chiusura che è quasi la stessa. Le parole si ripetono in tutto il documento. In qualsiasi modo si fetta, HTML (e il suo cugino muscoloso, XML ) non è magra.

E qual e ‘il piano quando un file è troppo grande? Zip it!

Se si potrebbe inviare un file. Zip al browser (index.html.zip) invece del semplice index.html vecchio, avremmo risparmiare larghezza di banda e il tempo di download. Il browser può scaricare il file compresso, estrarre, e poi mostrarlo a utente, che è di buon umore, perché la pagina è caricata in fretta. Il browser-server conversazione potrebbe essere simile a questo:

1. Browser: Hey, posso GET index.html? Prenderò una versione compressa se ​​ce l’hai.
2. Server: Vorrei trovare il file … sì, è qui. E prendo una versione compressa? Awesome.
3. Server:. Ok, ho trovato index.html (200 OK), sto zippare e invio in
4. Browser: Grande! E ‘solo 10KB. Io lo decomprimere e mostrare all’utente.

La formula è semplice: più piccolo file = più veloce download = felice utente .

Non mi credi? Il codice HTML parte della home page di yahoo va da 101kb a 15kb dopo la compressione:

Il (non così) dettagli peloso

La parte difficile di questo scambio è il browser e il server sapendo che è consentito inviare un file zippato su. L’accordo ha due parti

Se il server non invia il contenuto di codifica intestazione di risposta, significa che il file non è compresso (di default su molti server). L’intestazione “Accept-encoding” è solo una richiesta dal browser, non una domanda. Se il server non vuole restituire contenuto compresso, il browser deve fare non con la versione pesante regolare.

Configurazione del server

La “buona notizia” è che non possiamo controllare il browser. Si può inviare le Accept-Encoding: gzip, deflate intestazione o non è così.

Il nostro compito è quello di configurare il server in modo che restituisce il contenuto compresso se il browser in grado di gestirlo, risparmiando larghezza di banda per tutti (e dandoci un utente felice).

Per IIS, abilitare la compressione nelle impostazioni.

In Apache, abilitare la compressione di uscita è piuttosto semplice. Aggiungere quanto segue al file htaccess.:


# Comprimere il testo, html, javascript, css, xml:
AddOutputFilterByType testo DEFLATE / plain
AddOutputFilterByType DEFLATE text / html
AddOutputFilterByType testo DEFLATE / xml
AddOutputFilterByType DEFLATE text / css
AddOutputFilterByType DEFLATE application / xml
AddOutputFilterByType DEFLATE application / xhtml + xml
AddOutputFilterByType DEFLATE application / rss + xml
AddOutputFilterByType DEFLATE application / javascript
AddOutputFilterByType DEFLATE application / x-javascript

# Oppure, comprimere determinati tipi di file per estensione:
<Files *.html>
SetOutputFilter DEFLATE
</ Files>

Apache ha in realtà due opzioni di compressione:

Deflate è veloce e funziona, quindi lo uso, utilizzare mod_gzip se la tua barca galleggia.In entrambi i casi, Apache controlla se il browser ha inviato l’intestazione “Accept-encoding” e restituisce la versione compressa o regolare del file. Tuttavia, alcuni browser meno recenti possono avere problemi (più sotto) e ci sono direttive particolari che si possono aggiungere per correggere questo.

Se non è possibile modificare il file. Htaccess, è possibile utilizzare PHP per restituire contenuto compresso. Lascia la tua HTML file di estensione php e aggiungere questo codice in alto.:

In PHP :

<? Php if (substr_count ($ _SERVER [‘HTTP_ACCEPT_ENCODING’], ‘gzip’)) ob_start (“ob_gzhandler”); ob_start else ();?>

Controlliamo l’intestazione “Accept-encoding” e restituire una versione del file compresso con gzip (altrimenti la versione normale). Questo è quasi come costruire il vostro webserver (che divertimento!). Ma in realtà, tenta di utilizzare Apache per comprimere l’output se si può farne a meno. Tu non vuoi scimmia con i file.

Verificare il livello di compressione

Una volta configurato il server, controllare per assicurarsi che si sta effettivamente fornire un documento compresso.

Siate pronti ad ammirare i risultati. La home page instacalc ridotto da 36k a 10k, una riduzione del 75% delle dimensioni.

Provare Alcuni esempi

Ho creato alcune pagine e un esempio scaricabile :

Sentitevi liberi di scaricare i file, metterli sul server e modificare le impostazioni.

Avvertenze

Per quanto emozionante come può sembrare, HTTP La compressione non è tutto divertimento e giochi. Ecco cosa a cui prestare attenzione:

L’abilitazione della compressione è uno dei modi più veloci per migliorare le prestazioni del tuo sito. Andate, configurarlo, e lasciate che i vostri utenti di godere dei benefici.

Exit mobile version