2013-11-26 99 views
2

我(初學者和)試圖服務gzip jpeg與node.js和Express框架。我有/公用文件夾中的圖像。我的代碼如下所示:快遞與node.js不壓縮JPEG圖像

// require the express module 
var express = require('express'); 
var app = express(); 
app.use(express.logger()); 

//compress static content 
app.use(express.compress()); 

// GET verbs 
app.get('/', function(request, response) { 
    response.send('Hello World!'); 
}); 


// GET /public/* 
app.use(express.static(__dirname + '/public')); 

// Start the app on port 8080 if PORT not set 
var port = process.env.PORT || 8080; 
app.listen(port, function() { 
    console.log("Listening on " + port); 
}); 

我錯過了什麼嗎?在Chrome調試器上,禁用緩存(確保HTTP響應代碼爲200)時,在響應中找不到內容編碼:gzip標頭。

任何導致什麼我失蹤?

+2

文本資源正在工作(gzip'd標題顯示在響應中)。此外,爲什麼我需要gzip'd JPEG是測試一個邊緣的情況下,當網頁的JPEG文件帶有壓縮頭。 – arunaugustine

+0

如果您希望節省一些帶寬,則需要考慮的另一件事是在靜態圖像上自定義緩存控制標頭 –

回答

11

聲明:你真的不應該嘗試gzip圖像。你似乎有一個很好的理由,但我寫這爲未來的讀者:)。

如果你看一看的壓縮中間件source code,你會發現這一點:

exports.filter = function(req, res){ 
    return /json|text|javascript|dart|image\/svg\+xml|application\/x-font-ttf|application\/vnd\.ms-opentype|application\/vnd\.ms-fontobject/.test(res.getHeader('Content-Type')); 
}; 

默認情況下,只有文本文件進行壓縮。這是合乎邏輯的,因爲圖像等二進制文件已經被壓縮。

幸運的是,你可以通過你自己:

express.compress({ 
    filter: function (req, res) { 
    return true; 
    }) 
}); 

這應該壓縮一切。

+0

這很有效並且非常合理!謝謝 :) – arunaugustine