2012-09-28 96 views
24

我需要在nginx服務器上啓用gzip壓縮。正如我從firfox firebug NET工具中觀察到的,我發現html文件是gzip壓縮的。但不是JavaScript文件和CSS文件。在NGINX服務器上爲Magento啓用CSS和JS文件的GZIP

我已經檢查的mime.types和nginx的配置文件/etc/nginx/ngnix.conf並沒有發現任何問題。 仍然無法看到CSS和JavaScript Gzip壓縮。 我NGINX.conf條目如下

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

如果你選擇了廣受歡迎的[Fooman歐寶(http://www.magentocommerce.com/magento-connect/fooman- speedster.html),然後JS和CSS無論如何gzipped。 – clockworkgeek

+0

@ clockworkgeek..Thanks !!!但我想配置nginx,所以CSS和JS文件可以通過gzip壓縮。 – Anant

回答

89

這是我目前在生產中使用的工作配置。

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; 

這個配置經由tools.pingdom.com測試。

+0

感謝您的回覆。 。我不知道是什麼原因,但這對我來說不起作用。你能解釋一步一步的過程來調試問題或什麼應該是適當的步驟,以啓用gzip壓縮的CSS和JS文件..最令人驚訝的是Gzip正在爲html內容,即文本/ html MIME類型,但不適用於CSS和JS。還有一件事是,服務器上也啓用了Varnish緩存,服務器操作系統是Ubuntu .. .. – Anant

+0

你的頭部和頭部是否用esi標籤打孔?如果他們是,他們將從清漆供應。 –

+0

應該添加svg到答案tbh – Sammaye

1

你的gzip條目是否屬於js,css等nginx配置「範圍」。資產正在服務?我問,因爲如果你使用某種框架,有時會有不同的位置{...}塊來處理html請求和資產。

另外,當您在瀏覽器中進行測試時,請確保您進行硬刷新以強制服務器爲您提供所查看內容的「全新副本」。

最後,你可以使用gzip_types *來允許任何東西被壓縮。如果這是一種好的做法,也許別人可以加入。

+0

你能舉一些例子嗎? – karadayi

+1

eg:location〜*。* \。(ico | gif | jpg | jpeg | png | js | css | txt | wsdl | html){ try_files $ uri $ uri//index.php; } –

+1

通常gzip_types *不是可取的。它可能會嘗試壓縮已壓縮的資源,或難以壓縮資源(如某些圖像)。這可能不會節省大量空間。因此,它只是在浪費時間而忽視資源的時候作爲一種懲罰。 'gzip_min_length 1100;'指令也試圖找到這種平衡。 –

5

如果你的一些文件被壓縮,有些不是,那麼你的gzip正在工作,但你可能錯過了gzip_types的定義。例如,JavaScript文件可能返回頭以下任何類型:

  • 應用程序/ JavaScript的
  • 應用程序/ x-java描述
  • 文/ JavaScript的

要壓縮所有的JavaScript文件,所有gzip_types應該包含三個定義。

您需要檢查響應標頭什麼內容類型返回這樣的一個未壓縮的文件,然後確保它也在gzip_types中定義。

+0

這很重要!所有三個定義應該包含在gzip_types ....這個答案使我的gtmetrix得分從74%跳到了92% – Enthusiast

+0

謝謝。作品。將檢查我的一個文件的響應標題。看起來它沒有被壓縮。 – Rexford

+0

我的瀏覽器,火狐59.0b5,請求JavaScript文件類型:'應用程序/ JavaScript',我錯過了'gzip_types',導致無法工作,添加此類型後,它現在工作! – zw963

22

您可以從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,此行是正確的:

image/svg+xml svg svgz; 
相關問題