Me he centrado mucho en optimizar un determinado sitio web para que obtenga un puntaje de 100 en la herramienta Google PageSpeed Insights (tanto para dispositivos móviles como de escritorio). La mayoría de los elementos funcionan perfectamente, pero sigo recibiendo la advertencia "Habilitar compresión" para el sitio web.
Esto es problemático, porque gzip está habilitado en mi servidor, y los únicos recursos que se sirven sin comprimir provienen del módulo NGINX PageSpeed. He revisado las páginas de configuración en el sitio web de Google, pero no hay nada que describa cómo habilitar la compresión, aparte de la configuración general de NGINX que ya está implementada.
Mi pregunta es esta: ¿Cómo habilito la compresión gzip para que funcione para los recursos de velocidad de página?
La configuración de mi servidor:
Ubuntu 12.0.4.3 LTS NGINX: compilación personalizada 1.5.4 con el módulo PageSpeed 1.6.29.5 beta
Configuración del servidor NGINX:
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;
}
Configuración del sitio web:
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;
}
EDITAR Solo para elaborar más, los activos específicos que no parecen estar comprimiéndose son los activos de JavaScript. Como ejemplo:
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).
fuente
expires 24hrs
por alguna razón siempre obtengo "BEEEEP, LO ERES MAL". lo mismo aplica para YSLOWRespuestas:
Después de mucho más tirones de cabello, crujir de dientes y perforar altavoces (y buscar en Google), me encontré con una solicitud de defecto en un foro de soporte de NGINX para cambiar el tipo mime javascript (.js) de application / x-javascript a la aplicación / javascript. Ver http://trac.nginx.org/nginx/ticket/306
Como puede ver en el nginx.conf en mi pregunta, tenía:
Esto estaba causando esencialmente que mis archivos javascript sean ignorados por gzip_types, porque ya NO hay una aplicación / x-javascript mime-type (a menos que haga uno personalizado en mime-types.conf o tenga una versión muy antigua de NGINX) .
Cambié esa línea a esta:
Después de una recarga de NGINX, mis archivos javascript se comprimen perfectamente. Entonces, resulta que no tenía nada que ver con el módulo PageSpeed, y en cambio era un problema con mi configuración que no identificaba el tipo mime correcto para comprimir.
fuente
application/x-javascript
yapplication/javascript
, dado que durante mis solicitudes recibí ambos tipos de mimos (me pregunto si debería cambiar a soloapplication/javascript
.)A partir de la versión 1.9.32.1-beta, ngx_pagespeed habilitará y configurará gzip en sí mismo cuando no exista una configuración explícita de gzip en nginx (y el módulo de compresión gzip esté compilado).
Ver https://developers.google.com/speed/pagespeed/module/release_notes#release_1.9.32.1-beta
fuente
Según RFC 4329 , su servidor web debe usar
application/javascript
y noapplication/x-javascript
.Primero, debe verificar que su
/etc/nginx/nginx.conf
archivo contenga (al menos) alapplication/javascript
lado degzip_types
:P.ej
Luego, abra su archivo de tipos MIME
/etc/nginx/mime.types
y asegúrese de que si ve esto:a
Finalmente, vuelva a cargar su configuración:
¡Eso es!
fuente