Posso gzip file JavaScript e CSS in Django?
-
09-10-2019 - |
Domanda
Ho provato profiling mia applicazione web e uno dei colli di bottiglia riportata è stata la mancanza di compressione gzip. Ho provveduto a installare il middleware gzip in Django e ottenuto un po 'di spinta, ma un nuovo rapporto mostra che è solo gzipping i file HTML vale a dire qualsiasi contenuto elaborati da Django. C'è un modo ho potuto kludge / mod / forza / rendono il middleware gzip mio CSS e JS mia come bene?
Qualcuno potrebbe rispondere alle mie domande qui sotto. Ho ottenuto un po 'perso con questo.
- I potrebbe essersi sbagliato, ma la gente fa gzip il CSS e JS, non è vero?
- non Django impacco JS e CSS per un po 'del browser problemi di compatibilità?
- È compressione e minifying la stessa cosa?
Grazie.
Soluzione 4
Grazie a tutti.
Sembra che il GzipMiddleware in Django Il comprimere CSS e JS.
Stavo usando plug-Page Speed ??di Google per Firebug al profilo la mia pagina e sembra che si stava generando report basati su vecchie copie (versioni non-gzip) del CSSS e JSS nella mia cache locale. Queste copie erano lì da tempo prima che ho attivato il middleware Gzip. Arrossii la cache e sembra che i rapporti hanno mostrato risultati differenti del tutto.
Altri suggerimenti
Il tuo CSS e JS dovrebbe non essere passare attraverso Django sul sistema di produzione. È necessario configurare Apache (o Nginx, o qualsiasi altra cosa) per servire questi, e quando lo fai in modo sarete in grado di impostare la compressione gzip lì, piuttosto che in Django.
E no, la compressione e minifying non sono la stessa cosa. compressione Gzip viene eseguita dinamicamente dal server quando serve la vostra richiesta, e il browser decomprime in modo trasparente il file quando si riceve. Minification è il processo di rimozione di commenti e spazi bianchi dai file, e, talvolta, concatenare più file in uno (vale a dire un css e javascript uno, al posto di un sacco di ciascuno). Questo viene fatto quando si distribuiscono i file sul server - da Django-comprimere, come suggerisce Ashok, o da qualcosa di esterno come il YUI Compressor , e il browser non tenta di ricostruire il file originale -. che sarebbe impossibile, e inutile
Si dovrebbe pensare di effettuare l'applicazione Django dietro un proxy inverso HTTP.
È possibile configurare Apache per agire come un proxy inverso per l'applicazione Django, anche se un certo numero di persone sembrano preferire utilizzando nginx o lighttpd per questo scenario.
Un HTTP proxy inverso in fondo è un proxy creato direttamente di fronte alla vostra applicazione web. I browser fanno richieste del proxy inverso, e il proxy inverso inoltra le richieste l'applicazione web. Il proxy inverso può anche fare una serie di cose interessanti come la maniglia ssl, maniglia gzip-comprimendo tutte le risposte, e la maniglia che serve file statici.
Segui il suggerimento di Daniel Roseman, "Il tuo CSS e JS non deve essere passare attraverso Django sul sistema di produzione"
Se si vuole servire attraverso Django poi è possibile comprimere CSS, file js utilizzando django-compressore , django-comprimere