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のヘッダーである。もちろん、(他の静的リソースが同じを返す)
コンテンツはありません圧縮される。
私は間違っていますか?
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);
});
いや、それをしませんでした – Hankrecords