2012-02-29 1 views
7

Sto utilizzando il server integrato sul mio MacBook.Se ho usato i file JavaScript compressi, ottengo errori di carattere/token illegali in Chrome e Firefox

Dire che il mio script è foo.js. Questo funziona in entrambi i miei browser di test (Firefox 10, Chrome 17):

<script type="text/javascript" src="foo.js"></script> 

Se Gzip il file, tuttavia, entrambi i browser mi darà un errore di token/carattere illegale dopo cambio la linea di cui sopra a questo:

<script type="text/javascript" src="foo.js.gz"></script> 

Cosa dà? Anche il tipo deve essere cambiato o qualcosa del genere? Dove viene documentato questo tipo di pratica? Ogni volta che lo vedo menzionato sul web per "comprimere i tuoi script!", Nessuno si preoccupa mai di menzionare che devi fare qualcosa di speciale con i collegamenti.

+1

Questo dovrebbe essere fatto nella configurazione del server centrale, quindi non si ha a che fare con i file compressi manualmente. Non sei sicuro se abbia molto senso su un server di sviluppo locale? –

risposta

7

Il server Web deve comunicare al browser che il contenuto è gzip. Questo viene fatto usando l'intestazione content-encoding. Forse puoi configurare il tuo webserver per fornire questa intestazione con i file che terminano in .gz.

Invece di comprimere i file staticamente, è anche comune che il server web abbia funzionalità per comprimere i documenti al volo. Ciò significa che metti il ​​normale file foo.js nella root del documento e configura il webserver per comprimerlo quando lo si invia al client.

+0

Questa sembra la risposta giusta. Sfortunatamente, non riesco a riconfigurare il server per inviare l'intestazione corretta. Ho decommentato le righe AddEncoding in /etc/apache2/httpd.conf e riavviato il server, ma il suo comportamento non è cambiato. –

+1

perché comprimere le risorse statiche in modo dinamico? non ha senso, no? comprimerli nel processo di compilazione. –

2

Questo errore può verificarsi anche se l'impostazione di gzip è troppo alta. Ho provato gzip -9 e anche quando invio la corretta codifica dei contenuti, ho ricevuto questo errore. Quando ho appena eseguito un normale gzip, via gzip file.js, funziona quindi correttamente.

+1

huh interessante, ci proverò –

1

Ho avuto un errore simile. Controlla nella scheda di rete corrispondente al tuo foo.js. Nell'intestazione della risposta, l'intestazione richiesta deve avere Codifica contenuto: gzip e Content-Type: application/javascript. Altrimenti, il browser non decomprimerà il tuo file. Il browser dovrebbe sapere quale tipo di codifica del contenuto viene eseguita sul file.