Motivi per cui gzipped contenuto potrebbe non essere grokked dal browser
-
18-09-2019 - |
Domanda
Sto tentando di servire risorse statiche (css e javascript) come cache file compresso con gzip per motivi di prestazioni.
L'aspetto di pagine in formato gzip quando viene eseguito il rendering, il Content-Encoding è impostato correttamente gzip secondo LiveHTTPHeaders, e, soprattutto, il contenuto compresso con gzip è passare il GIDZipTest pagina (http://www.gidnetwork.com/tools/gzip-test.php) bene.Ecco un esempio di output del test:
Pagina Web compressa?Sì
Tipo di compressione?gzip
Dimensioni, Markup (byte) 18,286
Dimensione File (in bytes) 4,427
Compressione % 75.8
----
ResponseHeaders
di stato HTTP/1.0 200 OK
pragma no-cache cache-control privato, max-age=86500
scade Mon, 24 Aug 2009 04:34:14 GMT
x-amz-acl pubbliche-leggi
content-type text/css
content-md5 hqJaTBS3OzDFet/QHsd+ Qg==
content-encoding gzip
data Wed, 19 Aug 2009 04:34:14 GMT
server -- il mio server --
content-length 4427
L'intestazione di codifica del contenuto è in grassetto, e tutte le altre intestazioni sono come previsto.
La pagina di prova mostra anche il non compresso sorgente della pagina, ed è sempre esattamente come mi sarei aspettato di essere non compresso, e ho anche cercato di copiarlo e incollarlo da rendere da parte del browser, e funziona, quindi il problema deve essere nella attuale fase di riconoscere che la pagina è compresso con gzip e decompressione esso.
E questo non è un browser specifico.In FF, Webkit, e CIOÈ, questi file sono compressi con gzip non essere scompattato correttamente.Ho provato di tutto, mi vengono in mente, ma sono veramente perplesso.
Soluzione
Forse avete qualcos'altro gzipping il file una seconda volta, ma solo per HTTP 1.1 client che elencano in Accept-Encoding, come la maggior parte dei browser. GIDZipTest sta inviando http 1.0 richieste, e gzipping a 1,0 clienti è rischioso perché HTTP 1.0 non dispone di un campo Accept-Encoding per i clienti per indicare che codifiche sostengono, in modo che farebbe senso per il secondo compressore (se ce n'è uno ) di non gzip a 1,0 clienti. Se questo è il caso, GIDZipTest otterrebbe una risposta singola gzip mentre i browser sarebbe ottenere una risposta a due gzip (cattivo). Questo è solo una possibilità però. Raro, ma succede.
Se questo non è tutto, si dovrebbe davvero dare più informazioni, come un URL di una pagina esporre il problema.
Altri suggerimenti
Ho debug di un problema simile sopra l'ultimo paio di giorni.Tutto il codice html, css e js file nel mio progetto sono gzip sotto.Ha funzionato bene fino a firefox 3.5 è lungo.Firefox 3.0 e l'IE 7+8 non ha avuto alcun problema.Oh, e Opera 9+10 e Chrome si strozza la codifica.
I sintomi sono stati html e css file vengono riconosciuti correttamente, solo js file avuto il problema.Firebug mi da questo messaggio di errore:
Etichetta Non Valida
Content-Encoding:gzip
La soluzione per me è stato quello di rimuovere il doctype.Ho provato allentato e stretto e né funziona.Ma vorrei sapere che cosa il corretto doctype è.