리셋 되지 말자

[express] 미들웨어 - compression 본문

NodeJS/생활코딩

[express] 미들웨어 - compression

kyeongjun-dev 2020. 9. 23. 17:23

글 작성

아무거나 양이 많은 글을 복사해서 게시물을 하나 작성한다.

우측 하단에서 전송된 데이터 량이 22.7kB인 것을 확인할 수 있다.

 

미들웨어를 이용한 압축하기

nodejs 웹서버에서 특정 방식으로 압축을 진행한 뒤, 데이터를 웹 브라우저에 전송할 때 압축된 데이터와 함께 어떤 방식으로 압축했는지를 같이 보낸다. 그러면 웹 브라우저는 해당 방식으로 압축을 해제한 뒤 사용한다.

압축을 하고, 압축을 푸는 비용이 네트워크 전송 비용보다 저렴하다고 한다.

압축을 하는 과정과 압축을 푸는 과정을 미들웨어가 '대신'해준다.

 

compression 설치 (compression이 한국말로 압축이라고 한다.)

(expressjs.com/en/resources/middleware/compression.html)이 사이트의 설명대로, npm을 통해 설치한다.

$ npm install compression --save

사용을 위해 모듈로 선언 및 가져온다.

var compression = require('compression')
  • 사용법
var compression = require('compression')
var express = require('express')

var app = express()
app.use(compression({ filter: shouldCompress }))

function shouldCompress (req, res) {
  if (req.headers['x-no-compression']) {
    // don't compress responses with this request header
    return false
  }

  // fallback to standard filter function
  return compression.filter(req, res)
}

var compression으로 선언한 뒤, compression() 함수가 미들웨어를 리턴하고, app.use를 통해 compression을 '장착'한다.

  • 실제 코드 일부
const express = require('express')
const app = express()
const port = 80
const topic = require('./lib/topic');
const qs = require('querystring');

var db = require('./lib/db');
var template = require('./lib/template');

var compression = require('compression')

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(compression());

app.use(compression())으로 간단하게 사용 시작한다.

 

결과

전송된 데이터 량이 157 B인 것을 확인할 수 있다.

Response Headers를 확인하면 'Content-Encoding'이 gzip인 것을 확인할 수 있다.(gzip 방식으로 압축되어서 전송되었다는걸 뜻하는 것 같다.)

'NodeJS > 생활코딩' 카테고리의 다른 글

[express] 에러 처리하기  (0) 2020.09.23
[express] 미들웨어 만들기  (0) 2020.09.23
[express] 미들웨어 - body parser  (0) 2020.09.23
[express] 루트 페이지 작성, pretty url  (0) 2020.09.21
[NodeJS] SQL Injection  (2) 2020.09.19
Comments