#node.js #express #optimization
Вопрос:
Я пытаюсь создать код для сжатия экспресс-ответов, вот что у меня есть до сих пор с zlib и сжатием. С розеткой.io Я должен использовать HTTP на сервере.
const compression = require(`compression`); const bodyparser = require(`body-parser`); const nodecache = require(`node-cache`); const socketio = require(`socket.io`); const express = require(`express`); const zlib = require(`zlib`); const htt = require(`http`); const app = express(); const cache = new nodecache(); // Let me know how I app.use(compression()); app.use(bodyparser.json()); app.use(bodyparser.urlencoded({ extended: true })); app.use(bodyparser.json()); const server = htt.createServer(app); app.get(`/`, (req, res) =gt; { var raw = fs.createReadStream(__dirname `/index.html`); var aenc = req.headers[`accept-encoding`]; if (!aenc) { aenc = ``; } res.setHeader(`Cache-Control`, `no-cache`); if (aenc.match(/bgzipb/)) { res.writeHead(200, { "content-encoding": "gzip" }); raw.pipe(zlib.createGzip()).pipe(res); } else if (aenc.match(/bdeflateb/)) { res.writeHead(200, { "content-encoding": "deflate" }); raw.pipe(zlib.createDeflate()).pipe(res); } else { res.writehead(200, {}); raw.pipe(res); } }); app.get(`/*`, (rq, rs, n) =gt; { var f = __dirname `/` rq.params[0]; var ae = rq.headers[`accept-encoding`]; rs.setHeader(`Cache-Control`, `no-cache`); if (!ae) { ae = ``; } var rw; try { fs.accessSync(f); rw = fs.createReadStream(f); } catch (e) { rw = fs.createReadStream(__dirname `/404.html`); } if (ae.match(/bgzipb/)) { rs.writeHead(200, { "content-encoding": "gzip" }); rw.pipe(zlib.createGzip()).pipe(rs); } else if (ae.match(/bdeflateb/)) { rs.writeHead(200, { "content-encoding": "deflate" }); rw.pipe(zlib.createDeflate()).pipe(rs); } else { rs.writeHead(200, {}); rw.pipe(rs); } }); server.listen(3000, () =gt; { console.clear(); }); const io = new socketio.Server(server); io.on(`connection`, (socket) =gt; { socket.send(`Client Connected`); io.on(`message`, (data) =gt; { socket.emit("greetings", "Hey!", { "ms": "jane" }, Buffer.from([4, 3, 3, 1])); }); io.on(`salutations`, (e1, e2, e3) =gt; { console.log(e1, e2, e3); }); }); // Just a template, I'm going to add something else, let me know if this needs optimization.
Мне просто интересно, возможна ли еще какая-либо оптимизация с моей текущей настройкой, у меня есть IP-метод с подсказкой, но это в основном на стороне клиента.