Express.js est l'un des frameworks les plus populaires pour créer des applications Node.js. Sa légèreté la rend rapide, mais à mesure que votre application se développe, des goulots d'étranglement en termes de performances peuvent apparaître. Dans ce blog, je partagerai cinq conseils pratiques pour optimiser votre application Express.js en termes de vitesse et d'évolutivité.
Le middleware est l'épine dorsale de toute application Express.js, mais un middleware inutile ou mal implémenté peut ralentir les choses.
Charger uniquement le middleware requis : Évitez le middleware global pour les routes qui n'en ont pas besoin.
Exemple : appliquez l'analyseur de corps uniquement aux routes attendant une charge utile JSON.
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'); });
La mise en cache réduit le besoin de requêtes répétées de base de données ou d'appels d'API. Des outils tels que Redis ou les en-têtes de mise en cache HTTP peuvent améliorer considérablement les temps de réponse.
Exemple avec 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); } }); });
Mise en cache HTTP :
app.use((req, res, next) => { res.set('Cache-Control', 'public, max-age=3600'); // Cache for 1 hour next(); });
De grosses charges utiles peuvent ralentir les temps de réponse. L'activation de la compression Gzip peut réduire la taille de la charge utile et améliorer la vitesse.
const compression = require('compression'); const express = require('express'); const app = express(); app.use(compression()); // Compress all routes
Ce simple ajout peut réduire la taille des réponses jusqu'à 70 % !
Les requêtes lentes dans les bases de données sont souvent la principale cause des mauvaises performances des applications.
Conseils :
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); });
HTTP/2 permet le multiplexage et la compression d'en-tête, réduisant ainsi la latence des actifs statiques. L'association à un CDN accélère encore la livraison en mettant en cache les actifs statiques plus proches des utilisateurs.
Configuration pour HTTP/2 avec Express :
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'); });
En gérant efficacement le middleware, la mise en cache, la compression des réponses et l'optimisation des requêtes de base de données, vous pouvez améliorer considérablement les performances. Mettez en œuvre ces conseils et assurez-vous que votre application fonctionne très rapidement !
Si vous avez trouvé ce blog utile, cliquez sur l'icône ❤️ et suivez-moi pour plus de trucs et astuces JavaScript !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!