node服务支持gzip压缩
字数统计:
268字
|
阅读时长:
1分
const fs = require('fs') const zlib = require('zlib') const http = require('http') const { promisify } = require('util') const url = require('url')
const path = require('path')
const stat = promisify(fs.stat)
const server = http.createServer()
server.on('request', async function(req, res){ const {pathname} = url.parse(req.url, true) const filepath = path.join(__dirname, pathname)
try { const statObj = await stat(filepath) res.setHeader('Content-Type', 'text/plain;charset=utf-8') const acceptEncoding = req.headers['accept-encoding'] console.log(acceptEncoding); if(acceptEncoding) { if(acceptEncoding.match(/\bgzip\b/)) { res.setHeader('Content-Encoding', 'gzip') fs.createReadStream(filepath).pipe(zlib.createGzip()).pipe(res) } else if(acceptEncoding.match(/\bdeflate\b/)) { res.setHeader('Content-Encoding', 'deflate') fs.createReadStream(filepath).pipe(zlib.createDeflate()).pipe(res) } else { fs.createReadStream(filepath).pipe(res) } } else { fs.createReadStream(filepath).pipe(res) } } catch (error) { } })
server.listen(8080, function() { console.log('run'); })a
|