web-dev-qa-db-fra.com

Activer GZIP pour les fichiers CSS et JS sur le serveur NGINX pour Magento

J'ai besoin d'activer la compression gzip sur le serveur nginx. Comme je l'ai observé à partir des outils firfox firebug NET, j'ai constaté que les fichiers html sont compressés au format gzip. Mais pas les fichiers javascript et les fichiers CSS.

J'ai déjà vérifié Mime.types et le fichier de configuration nginx / etc/nginx/ngnix.conf et je n'ai trouvé aucun problème. toujours pas en mesure de voir la compression Gzip css et javascript. Mes entrées NGINX.conf sont comme ci-dessous

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;
38
Anant

Il s'agit d'une configuration de travail que j'utilise actuellement en production.

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/json
    application/xml
    application/rss+xml
    image/svg+xml;

Cette configuration a été testée via tools.pingdom.com.

120
Vern Burton

Vous pouvez trouver un exemple de configuration à partir du code html5 passe-partout .

 
 # Activer 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 est toujours compressé par 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; 
 
29
Koray Güclü

Si certains de vos fichiers sont compressés et d'autres non, alors votre gzip fonctionne mais vous avez peut-être manqué la définition dans gzip_types. Par exemple, les fichiers javascript peuvent renvoyer dans les en-têtes l'un des types suivants:

  • application/javascript
  • application/x-javascript
  • texte/javascript

Pour compresser tous les fichiers javascript, les trois définitions doivent être incluses dans gzip_types.

Vous devez vérifier en-têtes de réponse quel type de contenu est retourné pour un tel fichier non compressé, puis assurez-vous qu'il est également défini dans gzip_types.

6
lubosdz

Vos entrées gzip sont-elles dans la "portée" de la configuration nginx que js, css, etc. les actifs sont servis? Je demande parce que si vous utilisez une sorte de framework, il existe parfois différents blocs de localisation {...} qui gèrent les requêtes html par rapport aux actifs.

De plus, lorsque vous testez dans un navigateur, assurez-vous de faire un rafraîchissement brutal pour forcer le serveur à vous donner une "nouvelle copie" de tout ce que vous regardez.

Enfin, vous pouvez utiliser gzip_types * pour autoriser le gzip de tout. Peut-être que quelqu'un d'autre peut sonner si c'est une bonne pratique ou non.

1
Mike T

Pour compresser SVG, cette ligne est correcte:

image/svg+xml svg svgz;
1
karadayi