2009-08-05 16 views
9

Sto caricando jQuery da google sul mio sito (http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js) che è minned e gzip'd. In firefox, il file jquery mostra una richiesta di 19k, ma Safari lo mostra come una richiesta di 56k. Presumo quindi che Safari non lo accetti come un file gzip'd. Qual è l'accordo? Viene da Google e sono abbastanza sicuro che dovrebbe essere gzip'dsafari e gzip

+0

Si spera che, se le stelle si allineano, il file viene memorizzato nella cache dopo la prima volta in cui viene eseguito l'accesso e non viene effettivamente trasmesso dopo. – Nosredna

risposta

4

Ho solo pensato di aggiungere a questo nel caso in cui la gente si imbattesse nella stessa domanda. Dopo aver giocato di più con gli strumenti Dev e guardando le intestazioni di risposta, ho notato che lo Content-Length mostra effettivamente la dimensione corretta di gzip. Posso solo supporre che in effetti sta ottenendo la versione compressa corretta ma nella finestra principale delle risorse mostra la dimensione non compressa e le intestazioni mostrano la dimensione compressa.

7

Potrebbe voler dare un'occhiata a this link.

Dopo alcuni scavi ho appreso che non è possibile inviare javascript in Safari con estensione "gz". Deve essere “Jgz”

Così sembra la questione in realtà è con Google servirla come "gz" piuttosto che "Jgz" come Safari vuole.

+0

Questo potrebbe essere vero, ma è irrilevante qui poiché evidentemente lo sta servendo come '.js' considerando l'URL brad fornito. – mercator

1

vedo almeno due possibilità:

  • forse safari non sta inviando l'header HTTP che indica: "Io sono in grado di ricevere gzip"; quell'intestazione è Accept-Encoding e il suo valore è generalmente compress, gzip
  • forse Safari indica la dimensione dei dati non compressi?

Avete una sorta di "sniffer di rete", come wireshark(sembra che ci sia la versione per MacOS), per vedere realmente cosa sta succedendo attraverso la rete?

+0

Gave wireshark una breve possibilità, ma ha avuto un sacco di errori sul carico e non ha caricato alcuna interfaccia di rete. Penso che Eric abbia un buon punto anche se questo è incredibilmente frustrante se non posso usare google per servire i file gzip – brad

+0

Peccato :-(Il link @Eric postato parla di qualche tipo di estensione .gz o .jgz; non vedo nessuno di quelli nell'URL che hai dato: ha un'estensione .js - e google che non invia dati gzippati sembra un'idea abbastanza strana, considerando che safari è un browser recente, e che li aiuterebbe a ridurre i costi della banda ... Ancora. .. Se trovi la soluzione, faccelo sapere! –

12

Ho trovato questo: si NON è possibile utilizzare l'estensione ".gz" quando si servono file CSS o JS compressi su Safari. Si sa come gestire i file gziped, a patto che essi non hanno l'estensione '.gz' (è solo che strano :)

Ecco come servo JS compressi/file CSS per Safari:

  • utilizza qualsiasi altra estensione, solo non ".gz" ('.jgz', '.foo' o qualsiasi altra)
  • imposta l'intestazione con codifica gzip per le estensioni scelte ('Codifica contenuto: gzip')
  • impostare il tipo MIME appropriato: text/javascript o text/css

a tutti gli altri browser non importa quale estensione si utilizza, a patto che si imposta il giusto tipo di contenuto e codifica, quindi questo funziona su tutti i browser.

Ho testato con successo questo con Safari 4.0.4 su Windows XP SP3. E Chrome 4, FF 3.5.5, IE8 e Opera 10.10 su winxp, per la compatibilità cross-browser.

1

Ho incontrato anche questo problema, mentre cercavo di ottimizzare il tempo di caricamento di un sito web su iOS7 Safari iPad mobile.

  • codificato = dimensione del file compresso, dai server
  • Decoded = dimensione del file compresso, localmente
  • Trasferiti = dimensioni del file non compresso + headers inviati e ricevuti
  • Content-Length = file inviato compressi, dal server

Safari ha scelto un modo davvero strano di rappresentare questi numeri nel proprio debugger.

+0

Questo è utile sapere, l'ho scoperto anch'io! Ho pensato che "trasferito" fosse la dimensione di gzip ma che sembra non essere corretto, è la dimensione non compressa che è molto intuitiva . –