2012-09-28 2 views
24

Ich muss Gzip-Komprimierung auf Nginx-Server aktivieren. Wie ich von Firfox Firebug NET-Tools beobachtet habe, habe ich festgestellt, dass HTML-Datei gzip komprimiert sind. Aber nicht die Javascript-Dateien und CSS-Dateien.GZIP für CSS- und JS-Dateien auf NGINX-Server für Magento aktivieren

Ich habe bereits überprüfen mime.types und nginx Konfigurationsdatei /etc/nginx/ngnix.conf und keine Frage gefunden. immer noch nicht in der Lage, die CSS-und Javascript-Gzip-Komprimierung zu sehen. Meine nginx.conf Einträge sind wie unten

gzip on; 
gzip_disable "msie6"; 

gzip_vary on; 
gzip_proxied any; 
gzip_comp_level 6; 
gzip_buffers 16 8k; 
gzip_http_version 1.1; 
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 
+0

Wenn Sie die beliebte [Fooman Speed] wählen (http://www.magentocommerce.com/magento-connect/fooman- speedster.html) dann werden JS und CSS sowieso gezippt. – clockworkgeek

+0

@ Uhrwerkgeek..Danke !!! Aber ich möchte nginx konfigurieren, damit die CSS und JS Dateien gzip komprimiert werden können. – Anant

Antwort

89

Dies ist eine Arbeits Config, die ich derzeit in der Produktion verwenden.

http://pastie.org/10870547

gzip on; 
gzip_disable "msie6"; 

gzip_comp_level 6; 
gzip_min_length 1100; 
gzip_buffers 16 8k; 
gzip_proxied any; 
gzip_types 
    text/plain 
    text/css 
    text/js 
    text/xml 
    text/javascript 
    application/javascript 
    application/x-javascript 
    application/json 
    application/xml 
    application/rss+xml 
    image/svg+xml; 

Diese Konfiguration wurde über tools.pingdom.com getestet.

+0

Danke für die Antwort. Ich weiß nicht .. was ist der Grund, aber das hat nicht für mich funktioniert .. !!Können Sie Schritt-für-Schritt-Prozess erklären, um das Problem zu debuggen oder was die richtigen Schritte zum Aktivieren von GZIP-Komprimierung für CSS-und JS-Dateien sein sollte. Das Überraschendste ist Gzip funktioniert für HTML-Inhalt dh Text/HTML-MIME-Typen, aber nicht für CSS und JS. Eine weitere Sache ist, dass Varnish-Cache auch auf dem Server aktiviert ist und Server OS ist ubuntu .. !! – Anant

+0

Sind Kopf und Kopf mit esi-Tags gelocht? Wenn sie sind, würden sie von Varnish bedient werden. –

+0

Sollte svg in die Antwort tbh – Sammaye

1

Sind Ihre gzip Einträge innerhalb der nginx Konfiguration "scope", dass js, css, etc. Vermögenswerte werden bedient? Ich frage, weil, wenn Sie eine Art von Framework verwenden, manchmal gibt es verschiedene location {...} Blöcke, die HTML-Anforderungen vs Assets behandeln.

Stellen Sie auch beim Testen in einem Browser sicher, dass Sie eine Aktualisierung durchführen, um den Server zu zwingen, Ihnen eine "neue Kopie" von allem zu geben, was Sie sehen.

Schließlich können Sie gzip_types * verwenden, damit alles gezippt werden kann. Vielleicht kann jemand anderes einspringen, wenn dies eine gute Übung ist oder nicht.

+0

Können Sie einige Beispiele geben? – karadayi

+1

zB: location ~ *. * \. (Ico | gif | jpg | jpeg | png | js | css | txt | wsdl | html) { try_files $ uri $ uri//index.php; } –

+1

In der Regel gzip_types * wäre nicht ratsam. Es kann versuchen, bereits komprimierte Ressourcen zu komprimieren oder Ressourcen (wie einige Bilder) zu komprimieren. Dies führt wahrscheinlich nicht zu einer erheblichen Platzersparnis. Es handelt sich also um eine Strafe, die einfach Zeit verschwendet, während sie die Ressource entpackt. 'gzip_min_length 1100;' Direktive versucht auch, dieses Gleichgewicht zu finden. –

5

Wenn einige Ihrer Dateien komprimiert sind und andere nicht, dann funktioniert Ihr gzip, aber Sie haben möglicherweise die Definition in gzip_types verpasst. Zum Beispiel kann JavaScript-Dateien in Header zurückgeben einem der folgenden Art:

  • application/javascript
  • application/x-javascript
  • text/javascript

Um alle Javascript-Dateien zu komprimieren, alle Drei Definitionen sollten in gzip_types enthalten sein.

Sie müssen in Antwort-Header überprüfen welche Content-Typ für eine solche unkomprimierten Datei zurückgegeben wird, und dann stellen Sie sicher, dass es auch in gzip_types definiert ist.

+0

Das ist wichtig! Alle drei Definitionen sollten in gzip_types .... enthalten sein. Diese Antwort hat meinen gtmetrix Score von 74% auf 92% gesprungen – Enthusiast

+0

Danke. Funktioniert. Überprüft den Antwortheader für eine meiner Dateien. Es sieht so aus, als ob es nicht komprimiert wird. – Rexford

+0

Mein Browser, Firefox 59.0b5, Anfrage Javascript-Datei als Typ: 'application/javascript', ich vermisse dies in' gzip_types', verursacht nicht arbeiten, nach diesem Typ, es hat jetzt funktioniert! – zw963

22

Die Beispielkonfiguration finden Sie unter html5 boilerplate.

 

    # Enable Gzip 
    gzip on; 
    gzip_http_version 1.0; 
    gzip_comp_level 2; 
    gzip_min_length 1100; 
    gzip_buffers  4 8k; 
    gzip_proxied any; 
    gzip_types 
    # text/html is always compressed by HttpGzipModule 
    text/css 
    text/javascript 
    text/xml 
    text/plain 
    text/x-component 
    application/javascript 
    application/json 
    application/xml 
    application/rss+xml 
    font/truetype 
    font/opentype 
    application/vnd.ms-fontobject 
    image/svg+xml; 

    gzip_static on; 

    gzip_proxied  expired no-cache no-store private auth; 
    gzip_disable  "MSIE [1-6]\."; 
    gzip_vary   on; 

1

SVG zu komprimieren, ist diese Zeile korrekt:

image/svg+xml svg svgz;