Ich habe mich stark darauf konzentriert, eine bestimmte Website so zu optimieren, dass sie im Google PageSpeed Insights-Tool (für Handys und Desktops) 100 Punkte erzielt. Die meisten Elemente funktionieren einwandfrei, aber ich erhalte weiterhin die Warnung "Komprimierung aktivieren" für die Website.
Dies ist problematisch, da gzip auf meinem Server aktiviert ist und die einzigen Ressourcen, die unkomprimiert bereitgestellt werden, vom NGINX PageSpeed-Modul stammen. Ich habe die Konfigurationsseiten auf der Google-Website durchgesehen, aber es gibt nichts, das beschreibt, wie die Komprimierung aktiviert wird, außer der bereits vorhandenen allgemeinen NGINX-Konfiguration.
Meine Frage lautet: Wie aktiviere ich die gzip-Komprimierung, damit sie für Pagespeed-Ressourcen funktioniert?
Mein Server-Setup:
Ubuntu 12.0.4.3 LTS NGINX - Custom 1.5.4 mit PageSpeed-Modul 1.6.29.5 Beta kompiliert
NGINX Server Config:
user www-data;
#set worker processes to cpu processes
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
client_max_body_size 200m;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 3;
types_hash_max_size 2048;
gzip on;
gzip_disable msie6;
gzip_static on;
gzip_types text/plain text/css application/x-javascript text/xml application/xml+rss text/javascript;
gzip_vary on;
fastcgi_read_timeout 2m;
include global/caching.conf;
include /etc/nginx/enabled-sites/*;
upstream php {
server 127.0.0.1:9000;
}
#fastcgi caching header
add_header mcapp-fastcgi-cache $upstream_cache_status;
}
Website-Konfiguration:
server {
server_name www.examplesite.com;
rewrite ^ $scheme://examplesite.com$request_uri permanent;
}
server {
#pagespeed directives
pagespeed On;
pagespeed FileCachePath /var/cache/nginx-pagespeed;
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
add_header "" "";
}
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
#pagespeed directives end
server_name examplesite.com;
root /path/to/examplesite;
# wordpress config
include global/restrictions.conf;
include global/wordpress.conf;
}
BEARBEITEN Zur weiteren Erläuterung: Die spezifischen Elemente, die scheinbar nicht komprimiert werden, sind die JavaScript-Elemente. Als Beispiel:
Enable compression for the following resources to reduce their transfer size by 355.5KiB (69% reduction).
Compressing http://examplesite.com/wp-includes/js/jquery/jquery.js,qver=1.10.2.pagespeed.jm.iCH2ukpEYb.js could save 58.8KiB (64% reduction).
Compressing http://examplesite.com/wp-content/themes/Avada/framework/plugins/revslider/rs-plugin/js/jquery.themepunch.revolution.min.js?ver=3.6.1 could save 43.9KiB (80% reduction).
quelle
expires 24hrs
ich gzip einstelle oder aus einem Grund bekomme ich immer "BEEEEP, DU HÄLST ES FALSCH". Gleiches gilt für YSLOWAntworten:
Nachdem ich viel mehr an Haaren gezogen, Zähne geknabbert und Lautsprecher gestanzt (und gegoogelt) hatte, stieß ich in einem NGINX-Supportforum auf eine Fehleranforderung, den MIME-Typ von "application / x-javascript" (.js) zu ändern zur Anwendung / Javascript. Siehe http://trac.nginx.org/nginx/ticket/306
Wie Sie an der nginx.conf in meiner Frage sehen können, hatte ich:
Dies hat im Wesentlichen dazu geführt, dass meine Javascript-Dateien von den gzip_types ignoriert wurden, da es keinen application / x-javascript-MIME-Typ mehr gibt (es sei denn, Sie erstellen eine benutzerdefinierte Version in der mime-types.conf oder Sie haben eine wirklich alte Version von NGINX). .
Ich habe diese Zeile in diese Zeile geändert:
Nach einem NGINX-s-Reload werden meine Javascript-Dateien einwandfrei komprimiert! Es stellte sich heraus, dass dies nichts mit dem PageSpeed-Modul zu tun hatte. Stattdessen war es ein Problem mit meiner Konfiguration, nicht den richtigen MIME-Typ für die Komprimierung zu identifizieren.
quelle
application/x-javascript
undapplication/javascript
da ich während meiner Anfragen beide Mimetypen bekam (ich frage mich, ob ich zu nur wechseln sollteapplication/javascript
.Ab Release 1.9.32.1-beta aktiviert und konfiguriert ngx_pagespeed gzip selbst, wenn in nginx keine explizite gzip-Konfiguration vorhanden ist (und das gzip-Komprimierungsmodul in kompiliert ist).
Siehe https://developers.google.com/speed/pagespeed/module/release_notes#release_1.9.32.1-beta
quelle
Wie pro RFC 4329 , sollte der Webserver verwenden
application/javascript
und nichtapplication/x-javascript
.Zunächst sollten Sie überprüfen, ob Ihre
/etc/nginx/nginx.conf
Datei enthält (mindestens)application/javascript
nebengzip_types
:Z.B
Öffnen Sie dann Ihre MIME-Typendatei
/etc/nginx/mime.types
und stellen Sie sicher, dass Folgendes angezeigt wird:zu
Zuletzt laden Sie Ihre Konfiguration neu:
Das ist es!
quelle