gzip静态文件能不能预先压缩,储存后直接发送?

这个玩意能不能压缩后就保存在本地,如果需要改动就更新文件?这样子就不用每次返回的时候都消耗CPU了。

如果可以的话具体怎么操作?express

阅读 3.5k
3 个回答

完全可以这样做,先调用 node 原生 zlib 模块将静态资源压缩并缓存起来,响应时直接返回即可。

具体可参考官方文档。http://nodejs.cn/api/zlib.html

var zlib = require('zlib'),
    fs = require('fs'),
    assert = require('assert'),
    src = process.argv[2];

assert.notEqual(src, '', 'file name can not be null');
var dst = src + '.gz';

fs.createReadStream(src).pipe(zlib.createGzip()).pipe(fs.createWriteStream(dst));

上面是压缩一个文件的代码,你可以用 fs 模块的 readdir() 获取目录下的所有文件信息,然后逐一压缩。

可以的。以nginx为例,它会先检查是否有gzip文件。如果有,直接响应;没有,先压缩,再响应。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题