압축으로 API 강화

성능은 모든 API에 매우 중요합니다. 시간을 들여 API 응답 시간을 가능한 한 낮추는 것은 그만한 가치가 있습니다.

Solaris에서 이 예제 API 요청을 살펴보십시오.



API 응답은 시간이 44.6kB584ms 입니다. 이것은 끔찍하지는 않지만 압축을 통해 더 작고 빠를 수 있습니다.

익스프레스 압축



Node.js에 익숙하다면 아마도 Express.js을 사용한 적이 있을 것입니다.

Express는 확장 가능하며 볼트로 연결할 수 있는 많은 수의 미들웨어 라이브러리가 있습니다. 그러한 라이브러리 중 하나는 compression 입니다.

설치하려면compression:

npm install compression


그런 다음 단순히 Expressuse 함수를 호출하여 다음과 같이 미들웨어를 등록하는 경우입니다.

const express = require('express');
const compression = require('compression');
const app = express();

...

// Compress all responses
app.use(compression({
    threshold: 0 // Byte threshold (0 means compress everything)
}));

...


쉽죠? 이제 동일한 API 끝점을 호출하면 다음과 같은 결과가 나타납니다.



응답은 지금 8.1kB 이고 시간은 101ms 이며 이전보다 5배 이상 빠릅니다!

특정 응답 압축



위의 코드를 사용하여 모든 응답을 압축할 것입니다. 어떤 이유로 API의 응답을 압축하지 않으려면 다음과 같이 filter 함수를 재정의할 수 있습니다.

app.use(compression({
    threshold: 0,
    filter: (req, res) => {
        if (req.headers['x-no-compression']) {
            // don't compress responses if this request header is present
            return false;
        }

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

x-no-compression 헤더가 있는 모든 API 요청은 무시됩니다.

이제 API가 압축된 응답을 제공하고 이전보다 훨씬 더 나은 성능을 발휘할 것입니다!


여가 시간에는 **Solaris, check it out라는 오픈 소스 전략 게임을 개발합니다.

좋은 웹페이지 즐겨찾기