Domanda

Quali vantaggi fare sia offerta metodo per HTML, CSS e JavaScript file servite da un server LAMP. ci sono alternative migliori?

Il server fornisce informazioni a un'applicazione mappa utilizzando JSON, quindi un elevato volume di file di piccole dimensioni.

Vedi anche c'è un calo di prestazioni coinvolti nella scelta di gzip sopra sgonfiare per la compressione HTTP?

È stato utile?

Soluzione

  

Perché usare sgonfiare invece di gzip per file di testo serviti da Apache?

La semplice risposta è non .


RFC 2616 definisce sgonfiarsi come:

  

sgonfiare il formato "zlib" definito in RFC 1950 in combinazione con il meccanismo di compressione "sgonfia" descritto in RFC 1951

Il formato zlib è definito in RFC 1950 come:

     0   1
     +---+---+
     |CMF|FLG|   (more-->)
     +---+---+

       0   1   2   3
     +---+---+---+---+
     |     DICTID    |   (more-->)
     +---+---+---+---+

     +=====================+---+---+---+---+
     |...compressed data...|    ADLER32    |
     +=====================+---+---+---+---+

Così, un paio di intestazioni e un checksum Adler32

RFC 2616 definisce gzip come:

  

gzip Un formato di codifica prodotto dal programma di compressione file          "Gzip" (GNU zip) come descritto nella RFC 1952 [25]. Questo formato è un          Lempel-Ziv (LZ77) con un CRC a 32 bit.

RFC 1952 definisce i dati compressi come:

  

Il formato utilizza attualmente il metodo DEFLATE di compressione ma può essere facilmente estesa ad utilizzare altri metodi di compressione.

CRC-32 è più lento rispetto Adler32

  

Rispetto ad un controllo di ridondanza ciclica della stessa lunghezza, commercia affidabilità velocità (preferendo quest'ultimo).

Quindi ... abbiamo 2 meccanismi di compressione che utilizzano il stesso l'algoritmo per la compressione, ma un diverso algoritmo per intestazioni e checksum.

Ora, i pacchetti TCP sottostanti sono già abbastanza affidabile , in modo che il problema qui non è Adler 32 vs CRC-32 che GZIP utilizza.


Risulta molti browser nel corso degli anni implementato un algoritmo deflate errato. Invece di attesa dell'intestazione zlib nella RFC 1950 semplicemente aspettavano il carico utile compressa. Allo stesso modo i vari server web commesso lo stesso errore.

Così, nel corso degli anni i browser hanno iniziato l'attuazione di un logica fuzzy sgonfiarsi implementazione, provano per l'intestazione zlib e Adler checksum, se non funziona si cerca di carico utile.

Il risultato di avere logica complessa del genere è che spesso è rotto. Verve Studio hanno un contribuito testare sezione che mostrano quanto male la situazione.

Ad esempio: sgonfiare opere in Safari 4.0, ma è rotto in Safari 5.1, ma ha anche sempre problemi su IE.


Quindi, cosa migliore da fare è evitare di sgonfiarsi del tutto, l'aumento di velocità minore (a causa di Adler 32) non vale il rischio di carichi utili rotti.

Altri suggerimenti

GZip è semplicemente sgonfiare più una somma di controllo e l'intestazione / piè di pagina. Sgonfiare è più veloce , anche se, come ho imparato nel modo più duro.

gzip vs grafico sgonfiare

Sei probabilmente non in grado di scegliere in realtà sgonfiarsi come opzione. Contrariamente a quanto ci si potrebbe aspettare mod_deflate non utilizza sgonfiarsi, ma gzip. Così, mentre la maggior parte dei punti fatti valgono probabilmente non è rilevante per la maggior parte.

Penso che ci sia alcuna grande differenza tra deflate e gzip, perché gzip in fondo è solo un colpo di testa avvolta intorno deflate (vedi RFC 1951 e 1952).

Il motivo principale è che deflate è più veloce di codificare di gzip e su un server occupato che potrebbe fare la differenza. Con le pagine statiche è una questione diversa, in quanto possono essere facilmente pre-compressi una volta.

mod_deflate richiede meno risorse sul server, anche se si può pagare una piccola sanzione in termini di quantità di compressione.

Se si sta servendo molti file di piccole dimensioni, io consiglierei di benchmarking e test di carico vostre soluzioni compressi e non compressi -. Si possono trovare alcuni casi in cui abilitare la compressione non si tradurrà in un risparmio

Non ci dovrebbe essere alcuna differenza nella gzip e sgonfiare per la decompressione. Gzip è solo sgonfiare con un'intestazione dozzina byte pochi avvolto attorno ad esso compreso un checksum. Il checksum è la ragione per la compressione più lento. Tuttavia quando si sta precompressing un'infinità di file che si desidera che tali checksum come un controllo di integrità nel filesystem. Inoltre è possibile utilizzare gli strumenti a riga di comando per ottenere statistiche sul file. Per il nostro sito stiamo precompressing una tonnellata di dati statici (in tutta la directory aperta, 13.000 giochi, completamento automatico per milioni di parole chiave, ecc) e ci sono classificati al 95% più veloce di tutti i siti web di Alexa. Faxo Ricerca . Tuttavia, noi utilizziamo una casa cresciuta web server proprietarie. Apache / mod_deflate proprio non è tagliato. Quando i file sono compressi in file system non solo si prende un colpo per il file con la dimensione minima del blocco del filesystem ma tutto il inutile sovraccarico nella gestione del file nel file system che il server web potrebbe interessare di meno. Le vostre preoccupazioni dovrebbero essere ingombro totale del disco e l'accesso / tempo di decompressione e secondariamente accelerare nel riuscire a ottenere questi dati precompresso. L'impronta è importante perché, anche se lo spazio su disco è a buon mercato che si desidera il più possibile per adattarsi nella cache.

Su Ubuntu con Apache2 e il modulo deflate già installato (che lo è di default), è possibile attivare deflate gzip compressione in due semplici passaggi:

a2enmod deflate
/etc/init.d/apache2 force-reload

E sei lontano! Ho trovato pagine ho servito il mio connessione ADSL caricati molto più velocemente.

Modifica:. Come da @ di GertvandenBerg commento, questo consente la compressione gzip, non sgonfiare

se non ricordo male

  • gzip in grado di comprimere un po 'più di sgonfiare
  • deflate è più efficiente
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top