>웹 프론트엔드 >JS 튜토리얼 >빛처럼 빠른 성능을 위해 Express.js 앱을 강화하는 최고의 IP

빛처럼 빠른 성능을 위해 Express.js 앱을 강화하는 최고의 IP

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-25 09:00:14197검색

Top ips to Supercharge Your Express.js App for Lightning-Fast Performance

Express.js는 Node.js 애플리케이션 구축에 가장 널리 사용되는 프레임워크 중 하나입니다. 가벼운 특성으로 인해 속도가 빨라지지만 앱이 성장함에 따라 성능 병목 현상이 발생할 수 있습니다. 이 블로그에서는 속도와 확장성을 위해 Express.js 앱을 최적화하는 5가지 실용적인 팁을 공유하겠습니다.

1. 미들웨어 사용 최적화

미들웨어는 Express.js 앱의 중추이지만 불필요하거나 제대로 구현되지 않은 미들웨어는 작업 속도를 저하시킬 수 있습니다.

필요한 미들웨어만 로드: 필요하지 않은 경로에는 전역 미들웨어를 사용하지 마세요.
예: JSON 페이로드가 필요한 경로에만 body-parser를 적용합니다.

const express = require('express');
const app = express();
const bodyParser = require('body-parser');

// Use body-parser only for specific routes
app.post('/api/data', bodyParser.json(), (req, res) => {
  res.send('Data received');
});

2. 캐싱 활용

캐싱을 사용하면 데이터베이스 쿼리나 API 호출을 반복할 필요성이 줄어듭니다. Redis 또는 HTTP 캐싱 헤더와 같은 도구는 응답 시간을 크게 향상시킬 수 있습니다.

Redis의 예:

const redis = require('redis');
const client = redis.createClient();
const app = require('express')();

app.get('/api/resource', (req, res) => {
  const cacheKey = 'resource';
  client.get(cacheKey, (err, cachedData) => {
    if (cachedData) {
      res.send(JSON.parse(cachedData));
    } else {
      const data = fetchDataFromDatabase(); // Simulated DB call
      client.setex(cacheKey, 3600, JSON.stringify(data)); // Cache for 1 hour
      res.send(data);
    }
  });
});

HTTP 캐싱:

app.use((req, res, next) => {
  res.set('Cache-Control', 'public, max-age=3600'); // Cache for 1 hour
  next();
});

3. 압축 사용

페이로드가 크면 응답 시간이 느려질 수 있습니다. Gzip 압축을 활성화하면 페이로드 크기를 줄이고 속도를 향상시킬 수 있습니다.

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

app.use(compression()); // Compress all routes

이 간단한 추가로 응답 크기를 최대 70%까지 줄일 수 있습니다!

4. 데이터베이스 쿼리 최적화

느린 데이터베이스 쿼리가 앱 성능 저하의 주요 원인인 경우가 많습니다.

팁:

  • 데이터베이스에서 자주 쿼리되는 필드를 색인화합니다.
  • 대규모 데이터세트에는 페이지 매김 또는 제한을 사용하세요.
  • 조인 또는 일괄 가져오기를 사용하여 N 1 쿼리 문제를 방지하세요. 몽구스의 예:
const User = require('./models/User');

// Instead of fetching all users
app.get('/users', async (req, res) => {
  const users = await User.find().limit(20).skip(0); // Use pagination
  res.send(users);
});

5. HTTP/2 활성화 및 CDN 사용

HTTP/2는 멀티플렉싱 및 헤더 압축을 허용하여 정적 자산의 대기 시간을 줄여줍니다. 이를 CDN과 결합하면 사용자에게 더 가까운 정적 자산을 캐싱하여 제공 속도가 더욱 빨라집니다.

Express를 사용한 HTTP/2 설정:

const http2 = require('http2');
const fs = require('fs');
const express = require('express');

const app = express();
const options = {
  key: fs.readFileSync('./ssl/key.pem'),
  cert: fs.readFileSync('./ssl/cert.pem'),
};

http2.createSecureServer(options, app).listen(8443, () => {
  console.log('HTTP/2 server running on port 8443');
});

미들웨어를 효율적으로 관리하고, 캐싱하고, 응답을 압축하고, 데이터베이스 쿼리를 최적화하면 성능을 크게 향상시킬 수 있습니다. 다음 팁을 구현하여 앱이 엄청나게 빠르게 작동하도록 하세요!

이 블로그가 도움이 되었다면 ❤️ 아이콘을 누르고 저를 팔로우하여 더 많은 JavaScript 팁과 요령을 확인하세요!

위 내용은 빛처럼 빠른 성능을 위해 Express.js 앱을 강화하는 최고의 IP의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.