所以我无法将PBF文件从服务器发送到客户端gzip。除了那些文件之外,其他所有内容都被gzip压缩,我无法理解为什么。所以我决定手动gzip文件,我想在浏览器中解压缩它们。
这是我将收到gzip压缩文件的地方:
var soil = L.mbTiles("data/myLayer/{z}/{x}/{y}.pbf.gz", {
name: "myLayer",
storage: "myLayer",
mbtileLayerName: "myLayer",
maxNativeZoom: 10,
minNativeZoom: 10,
minZoom: 6,
bounds: L.latLngBounds([36.9,-116.2],[35.0,-113.9])
})
现在我将修改mbTiles,我想在它对数据执行任何操作之前将其解压缩。我该怎么做?
修改 这是我的server.js:
var loopback = require('loopback');
var boot = require('loopback-boot');
var compression = require('compression');
var bodyParser = require('body-parser');
var app = module.exports = loopback();
var session = require('client-sessions');
var path = require('path');
var expressStaticGzip = require("express-static-gzip");
app.engine('pug', require('pug').__express);
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'pug');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(compression({ threshold: 0 }));
app.use(loopback.static(__dirname+'../'));
//app.use("/test/data", expressStaticGzip("../views/test/data"));
app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};
boot(app, __dirname, function(err) {
if (err) throw err;
// start the server if `$ node server.js`
if (require.main === module)
app.start();
});
答案 0 :(得分:0)
您需要告诉压缩模块这些文件是可压缩的。您可以在压缩选项对象中定义过滤器方法。
过滤器
决定是否应考虑响应的功能 压缩。此函数称为filter(req,res),并且是 期望返回true以考虑压缩响应,或 错误,不压缩响应。
默认过滤器功能使用可压缩模块来确定 如果res.getHeader('Content-Type')是可压缩的。