2017-02-24 12 views
0

スクリプトのサイズを縮小するために、私は明示的なアプリケーションで静的ファイルをgzipしようとしています。私はexpress '"compression"モジュールを使ってみましたが、何も圧縮しません。Express.js圧縮モジュールが動作しない

同じ問題を抱えている人たちのためにオンラインで調べましたが、私が見つけたすべての答えは、すべてのルートの上にapp.use(compression())を置いて圧縮のサイズしきい値を0に設定しただけでしたが、まだどこにもいない。

ここに関連するコードは次のとおりここ

var express = require("express"); 
var fs = require('fs'); 
var xml2js = require("xml2js"); 
var auth = require("./authenticator.js"); 
var bodyParser = require('body-parser'); 
var _ = require('lodash'); 
var compression = require('compression') 

var app=express(); 

app.use(compression({threshold : 0})); 

var jsonParser = bodyParser.json(); 

var urlencodedParser = bodyParser.urlencoded({ 
    extended: true 
}); 

app.get('/', function(req, res){ 
    res.header('X-UA-Compatible', 'IE=Edge'); 
    res.setHeader("Cache-Control", "public, max-age=604800, must-revalidate"); 
    sendFile(res, 'index.html', 'text/html'); 
}); 

app.get('/testGZIP', function(req, res){ 
    res.setHeader('Content-Type', 'application/json'); 
    res.setHeader("Cache-Control", "public, max-age=604800, must-revalidate"); 
    var msg = JSON.stringify({'text':_.times(5000, _.uniqueId())}); 
    res.write(msg); 
    res.end(); 
}); 

app.use(function(req, res, next) { 
    var urls = ['modules/', 'font/', 'js/', 'css/', 'views/', 'img/']; 
    if(_.some(urls, (el) => _.includes(req.url, el))) { 
     console.log("g-zipping request " + req.url + "..."); 
     res.setHeader("Cache-Control", "public, max-age=604800, must-revalidate"); 
    } 
    return next(); 
}); 
app.use('/font/', express.static('./font/')); 
app.use('/modules/', express.static('./node_modules/')); 
app.use('/css/', express.static('./css/')); 
app.use('/views/', express.static('./views/')); 
app.use('/img/', express.static('./img/')); 
app.use('/js/', express.static('./js/')); 

var server = app.listen(8010, function(){ 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log("\nServer started on ip " + host + ' on port ' +port + " - " + (new Date()).getHours() + ":" + (new Date()).getMinutes() + "\n"); 
}); 

は/ testGZIPのヘッダーである。もちろん、(他の静的リソースが同じを返す)

enter image description here

コンテンツはありません圧縮される。

私は間違っていますか?


EDIT:

私はzlibのではなく、gzipでこれをやってみましたが、どちらかの圧縮されていない:私はあなたの場合には、コンテンツのエンコーディングを設定する必要があると思う

app.get('/testZlib', function(req,res){ 
    res.writeHead(200, { 
    'Content-Encoding': 'gzip' }); 
    fs.createReadStream('js/client-main.min.js').pipe(zlib.createGzip()).pipe(res); 
}); 

答えて

0

それを働かせる。

例: - res.set('Content-Encoding', 'gzip');

+0

いや、それをしませんでした – Hankrecords

関連する問題