Un API trebuie să funcționeze cât de repede poate, pentru a deservi un număr potențial mare de clienți. Folosiți aceste sfaturi pentru a vă regla API-urile pentru viteza maximă.
Adoptarea rapidă a arhitecturii microservicii a consolidat rolul API-urilor ca mijloc principal de comunicare pentru dezvoltarea modernă. API-urile oferă un mijloc eficient de schimb de date între clienți și aplicații de pe partea de server, precum și între diferite sisteme backend.
Express.js oferă o soluție elegantă pentru construirea de API-uri RESTful. Dar este esențial să acordăm prioritate măsurilor de performanță pe parcursul dezvoltării.
Acest lucru garantează că API-urile dvs. nu numai că funcționează eficient, ci și că funcționează optim. În cele din urmă, o aplicație web cu performanțe bune are ca rezultat o experiență mai bună pentru utilizator și o șansă mai mare de succes.
Optimizarea performanței pentru API-urile REST Express.js
Express.js folosește natura asincronă a lui Node.js și arhitectura bazată pe evenimente pentru a atinge niveluri excepționale de viteză și performanță.
Cu toate acestea, optimizarea Express.js API-urile REST poate aduce beneficii și mai mari. Acestea includ timpi de răspuns semnificativ îmbunătățiți, fiabilitate îmbunătățită și eficiență sporită a aplicațiilor dvs., ceea ce duce la experiențe de utilizator fără întreruperi și captivante.
Prin prioritizarea performanței API-urilor dvs., deschideți calea pentru succesul software-ului dvs. în ansamblu.
Iată câteva dintre sfaturile pe care le puteți folosi pentru a îmbunătăți performanța API-urilor dvs. REST.
1. Optimizați interogările bazei de date
Preluarea și manipularea eficientă a datelor dintr-o bază de date poate avea un impact substanțial asupra performanței API-urilor REST.
Prin optimizarea interogărilor bazei de date, puteți reduce semnificativ timpul de execuție a interogărilor și puteți reduce consumul de resurse. Acest lucru va îmbunătăți în cele din urmă performanța aplicației dvs. Express.js în ansamblu.
Iată câteva sfaturi utile pentru optimizarea interogărilor bazei de date.
- Utilizare indici de baze de date. Identificați coloanele utilizate frecvent în interogări și creați indecși corespunzători pe acele coloane. Acest lucru permite motorului bazei de date să găsească și să recupereze rapid datele necesare, rezultând o execuție mai rapidă a interogărilor.
- Implementați paginarea. Când aveți de-a face cu seturi de date mari, utilizați paginarea. În loc să preluați toate datele simultan, limitați cantitatea de date returnate în fiecare interogare.
- Evitați interogările redundante. Analizați-vă codul, identificați și omiteți orice interogări redundante. Refactorizarea interogărilor în consecință poate duce la îmbunătățiri substanțiale ale performanței.
2. Utilizați memorarea în cache în aplicația dvs
Memorarea în cache este o tehnică folosită pentru a stoca datele accesate frecvent într-un cache, un sistem de stocare temporară. Mai simplu spus, atunci când un client solicită date, serverul își verifică mai întâi memoria cache, în loc să interogă direct baza de date.
Dacă găsește datele solicitate în cache, le returnează imediat, ocolind nevoia de procesare ulterioară sau accesul efectiv la baza de date. Acest lucru îmbunătățește semnificativ performanța API-urilor prin reducerea timpilor de răspuns și minimizarea sarcinii aplicației, în special atunci când procesează mai multe interogări.
Iată un exemplu de cod simplu care demonstrează cum să implementați memorarea în cache.
const expres = cere('expres');
const NodeCache = cere(„node-cache”);const cache = nou NodeCache();
const aplicație = expres();app.get(„/api/data”, (req, res) => {
const cacheKey = 'date';
const cachedData = cache.get (cacheKey);
dacă (!date păstrate) {
const fetchedData = fetchDataFromDatabase();
cache.set (cacheKey, fetchedData);
cachedData = fetchedData;
}res.json (cachedData);
});
funcţiefetchDataFromDatabase() {
//... Logica de preluare a datelor merge aici...
întoarcere date;
}
Codul de mai sus demonstrează cum funcționează stocarea în cache folosind biblioteca nod-cache. Inițial, verifică dacă datele solicitate sunt deja stocate în cache. Dacă datele nu sunt prezente, declanșează funcția de preluare a datelor din baza de date, apoi stochează datele preluate în cache. În cele din urmă, returnează datele solicitate către client ca răspuns JSON.
3. Activați compresia HTTP
Compresia HTTP este o tehnică pe care o puteți folosi pentru a reduce dimensiunea datelor transferate între un client și un server. Aceasta implică comprimarea răspunsurilor API pe partea de server și decomprimarea lor pe partea client.
Prin activarea compresiei HTTP, dimensiunea sarcinilor utile de răspuns poate fi redusă semnificativ, ceea ce duce la timpi de răspuns mai rapid.
Iată un exemplu de cod care demonstrează cum să activați compresia HTTP folosind comprimare middleware.
expres = cere('expres');
const compresie = cere('comprimare');const aplicație = expres();
app.use (compresie());
app.get(„/api/data”, (req, res) => {
// Gestionați-vă logica API
});
Acest fragment de cod folosește middleware pentru a comprima răspunsurile API înainte de a le returna clientului.
4. Implementați procesarea paralelă folosind Promise.all
Prelucrare paralelă folosind promite.toate metoda este o tehnică folosită pentru a îmbunătăți performanța API-urilor prin executarea simultană a mai multor sarcini asincrone.
Prin valorificarea puterii promisiunilor JavaScript, Promise.all vă permite să executați o colecție de promisiuni simultan, mai degrabă decât să așteptați ca fiecare promisiune să se rezolve secvenţial.
Această tehnică este utilă în special atunci când aveți sarcini independente care pot rula simultan, cum ar fi efectuarea de solicitări API multiple legate de puncte finale diferite. Executând aceste sarcini în paralel, puteți reduce semnificativ timpul general de execuție și puteți îmbunătăți capacitatea de răspuns a API-ului dvs.
Iată un exemplu de cod simplu care demonstrează cum să implementați procesarea paralelă folosind Promise.all.
const expres = cere('expres');
const axios = cere("axios");const aplicație = expres();
app.get(„/api/data”, asincron (req, res) => {
încerca {
const cerere1 = axios.get(' https://api.example.com/endpoint1');
const cerere2 = axios.get(' https://api.example.com/endpoint2');
const cerere3 = axios.get(' https://api.example.com/endpoint3');const [răspunsul1, răspunsul2, răspunsul3] = așteaptăPromisiune.toate([
cerere 1,
cerere 2,
cerere3
]);
// Procesează răspunsurile după cum este necesar
} captură (eroare) {
starea res.(500).json({ eroare: 'eroare' });
}
});
În acest exemplu, codul face solicitări API către trei puncte finale diferite. Folosind funcția Promise.all, transmițând o serie de promisiuni, codul așteaptă ca toate să se termine înainte de a returna răspunsurile într-o matrice.
După ce ați primit toate răspunsurile, le puteți procesa după cum este necesar. Cu toate acestea, ar trebui să fiți atenți cu această abordare și să evitați utilizarea excesivă, deoarece poate supraîncărca serverul, cauzând blocaje de răspuns la API.
5. Utilizați poolingul de conexiuni la baza de date
Gruparea conexiunilor la baze de date este o metodă care implică crearea unui grup de conexiuni la baze de date reutilizabile pentru a gestiona mai multe solicitări ale clienților în mod eficient.
În loc să stabilească o nouă conexiune pentru fiecare cerere, aplicația reutiliza conexiunile existente din pool, reducând costul general al stabilirii de noi conexiuni, rezultând o interogare mai rapidă și mai eficientă execuţie.
Iată un exemplu de cod scurt care demonstrează cum să utilizați gruparea conexiunilor la baza de date cu Mangusta într-o aplicație Express.js.
const mangusta = cere('mangustă');
const { conexiune } = cere('mangustă');const connectionOptions = {
Dimensiunea piscinei: 10,
useNewUrlParser: Adevărat,
useUnifiedTopology: Adevărat
};
mangoose.connect(„mongodb://localhost/mydatabase”, connectionOptions);
În acest exemplu, proprietatea dimensiune pool de conexiuni este setată la 10 — aceasta specifică numărul maxim de conexiuni din pool.
Prin setarea acestei configurații, API-ul poate reutiliza conexiunile, rezultând o performanță îmbunătățită a API-ului prin reducerea costurilor generale de stabilire a noilor conexiuni pentru fiecare solicitare.
Prioritizarea performanței API pentru profit
Există mai mulți pași pe care îi puteți face pentru a optimiza performanța API-urilor Express.js. API-urile joacă a rol crucial, așa că este esențial să vă concentrați pe performanța lor pentru a garanta succesul general al dvs software.