美文网首页语言基础
nodejs-资源压缩-v1.0.0

nodejs-资源压缩-v1.0.0

作者: 一点金光 | 来源:发表于2018-09-19 17:36 被阅读0次

情景

览器向服务器发起资源请求,比如下载一个js文件,服务器先对资源进行压缩,再返回给浏览器,以此节省流量,加快访问速度。

浏览器通过HTTP请求头部里加上Accept-Encoding,告诉服务器,“你可以用gzip,或者defalte算法压缩资源”。

Accept-Encoding:gzip, deflate

那么,在nodejs里,是如何对资源进行压缩的呢?可用Zlib模块。

入门示例

/************************压缩************************************/
var fs = require('fs');
var zlib = require('zlib');

var gzip = zlib.createGzip();

var inFile = fs.createReadStream('./extra/fileForCompress.txt');
var out = fs.createWriteStream('./extra/fileForCompress.txt.gz');

inFile.pipe(gzip).pipe(out);

/************************解压************************************/
var fs = require('fs');
var zlib = require('zlib');

var gunzip = zlib.createGunzip();

var inFile = fs.createReadStream('./extra/fileForCompress.txt.gz');
var outFile = fs.createWriteStream('./extra/fileForCompress1.txt');

inFile.pipe(gunzip).pipe(outFile);

使用

/************************服务端gzip压缩-文件*********************/
var http = require('http');
var zlib = require('zlib');
var fs = require('fs');
var filepath = './extra/fileForGzip.html';

var server = http.createServer(function(req, res){
    var acceptEncoding = req.headers['accept-encoding'];
    var gzip;
    
    if(acceptEncoding.indexOf('gzip')!=-1){ // 判断是否需要gzip压缩
        
        gzip = zlib.createGzip();
        
        // 记得响应 Content-Encoding,告诉浏览器:文件被 gzip 压缩过
        res.writeHead(200, {
            'Content-Encoding': 'gzip'
        });
        fs.createReadStream(filepath).pipe(gzip).pipe(res);
    
    }else{

        fs.createReadStream(filepath).pipe(res);
    }

});

server.listen('3000');

/************************服务端gzip压缩-字符*********************/
var http = require('http');
var zlib = require('zlib');

var responseText = 'hello world';

var server = http.createServer(function(req, res){
    var acceptEncoding = req.headers['accept-encoding'];
    if(acceptEncoding.indexOf('gzip')!=-1){
        res.writeHead(200, {
            'content-encoding': 'gzip'
        });
        res.end( zlib.gzipSync(responseText) );
    }else{
        res.end(responseText);
    }

});

server.listen('3000');

相关文章

  • nodejs-资源压缩-v1.0.0

    情景 览器向服务器发起资源请求,比如下载一个js文件,服务器先对资源进行压缩,再返回给浏览器,以此节省流量,加快访...

  • nodejs-路径处理-v1.0.0

    接口 示例 文档 https://nodejs.org/api/path.html#path_path

  • nodejs-文件接收-v1.0.0

    文件接收 获取信息

  • nodejs-传超文本-v1.0.0

    简单示例 安全证书 安全连接 简单应用 相关文档 http://www.cnblogs.com/chyingp/p...

  • Android自动化批量图片压缩插件McImage

    文 | Promise Sun 一、资源图片压缩 关于资源图片压缩,可以在tinypng这个网站进行手动图片压缩,...

  • 性能优化总结

    资源的合并与压缩 核心:减少http请求数量(合并)减少资源请求大小(压缩) html压缩:压缩这些在文本文件中有...

  • 负载均衡

    什么是静态资源 nginx作为WEB静态资源的原理 CDN示例 配置语法 静态文件的压缩 对可压缩的静态资源压缩比...

  • 页面性能优化

    加载资源优化 1,静态资源的压缩合并,减少HTTP请求 资源的合并,可以减少http请求数量。资源的压缩,可以减少...

  • 前端资源优化解决方案

    前言 常见的资源优化方案有:1.资源压缩与合并2.图片格式优化3.图片加载优化 资源压缩与合并 为什么要压缩与合并...

  • 安装包大小优化

    1.常规的安装包优化 图片压缩 资源动态加载 Lint工具 极限压缩 Proguard 混淆 2.资源文件再压缩 ...

网友评论

    本文标题:nodejs-资源压缩-v1.0.0

    本文链接:https://www.haomeiwen.com/subject/vkrcyftx.html