因此,我无法从服务器将PBF文件发送到已压缩的客户端。除了那些文件,其他所有内容都压缩了,我不明白为什么。因此,我决定先对文件进行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();
});
您需要告诉压缩模块这些文件是可压缩的。您可以在压缩选项对象中定义过滤方法。
过滤
决定是否应考虑响应进行压缩的功能。此函数称为filter(req,res),预期返回true以考虑压缩响应,否则返回false以不压缩响应。
默认的过滤器功能使用可压缩模块来确定res.getHeader('Content-Type')是否可压缩。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句