Rozhranie API musí fungovať čo najrýchlejšie, aby slúžilo potenciálne veľkému počtu klientov. Pomocou týchto tipov vylaďte svoje rozhrania API na maximálnu rýchlosť.
Rýchle prijatie architektúry mikroslužieb upevnilo úlohu API ako primárneho komunikačného prostriedku pre moderný vývoj. Rozhrania API poskytujú efektívny prostriedok na výmenu údajov medzi klientmi a aplikáciami na strane servera, ako aj medzi rôznymi backend systémami.
Express.js poskytuje elegantné riešenie na vytváranie RESTful API. Je však nevyhnutné uprednostňovať ukazovatele výkonnosti počas vývoja.
To zaručuje, že vaše API nielen efektívne fungujú, ale aj optimálne fungujú. Výsledkom dobre fungujúcej webovej aplikácie je v konečnom dôsledku lepšia používateľská skúsenosť a väčšia šanca na úspech.
Optimalizácia výkonu pre REST API Express.js
Express.js využíva asynchrónnu povahu Node.js a architektúru riadenú udalosťami na dosiahnutie výnimočných úrovní rýchlosti a výkonu.
Napriek tomu optimalizácia Express.js REST API môže priniesť ešte väčšie výhody. Patria medzi ne výrazne zlepšené časy odozvy, zvýšená spoľahlivosť a zvýšená efektivita vašich aplikácií, čo vedie k bezproblémovým a pútavým užívateľským skúsenostiam.
Uprednostňovaním výkonu vašich rozhraní API pripravíte cestu úspechu vášho softvéru ako celku.
Tu je niekoľko tipov, ktoré môžete použiť na zvýšenie výkonu vašich REST API.
1. Optimalizujte databázové dotazy
Efektívne získavanie a manipulácia s údajmi z databázy môže výrazne ovplyvniť výkon REST API.
Optimalizáciou databázových dotazov môžete výrazne skrátiť čas vykonania dotazu a znížiť spotrebu zdrojov. To v konečnom dôsledku zvýši výkon vašej aplikácie Express.js ako celku.
Tu je niekoľko užitočných tipov na optimalizáciu databázových dotazov.
- Použite databázové indexy. Identifikujte často používané stĺpce v dotazoch a vytvorte vhodné indexy v týchto stĺpcoch. To umožňuje databázovému stroju rýchlo nájsť a získať požadované údaje, čo vedie k rýchlejšiemu vykonávaniu dotazu.
- Implementujte stránkovanie. Pri práci s veľkými množinami údajov použite stránkovanie. Namiesto načítania všetkých údajov naraz obmedzte množstvo údajov vrátených v každom dotaze.
- Vyhnite sa nadbytočným dopytom. Analyzujte svoj kód, identifikujte a vynechajte akékoľvek nadbytočné dotazy. Zodpovedajúca refaktorizácia vašich dopytov môže viesť k podstatnému zlepšeniu výkonu.
2. Použite ukladanie do vyrovnávacej pamäte v celej aplikácii
Ukladanie do vyrovnávacej pamäte je technika používaná na ukladanie často používaných údajov do vyrovnávacej pamäte, dočasného úložného systému. Jednoducho povedané, keď klient požaduje údaje, server najprv skontroluje svoju vyrovnávaciu pamäť namiesto priameho dopytovania databázy.
Ak nájde požadované údaje vo vyrovnávacej pamäti, okamžite ich vráti a obíde potrebu ďalšieho spracovania alebo samotného prístupu do databázy. To výrazne zlepšuje výkon API znížením doby odozvy a minimalizovaním zaťaženia aplikácie, najmä pri spracovaní viacerých dotazov.
Tu je jednoduchý príklad kódu, ktorý ukazuje, ako implementovať ukladanie do vyrovnávacej pamäte.
konšt vyjadriť = vyžadovať('expresné');
konšt NodeCache = vyžadovať('node-cache');konšt cache = Nový NodeCache();
konšt app = express();app.get('/api/data', (req, res) => {
konšt cacheKey = 'data';
konšt cachedData = cache.get (cacheKey);
ak (!cachedData) {
konšt fetchedData = fetchDataFromDatabase();
cache.set (cacheKey, fetchedData);
cachedData = fetchedData;
}res.json (údaje vo vyrovnávacej pamäti);
});
funkciufetchDataFromDatabase() {
//... Logika načítavania údajov je tu ...
vrátiť údaje;
}
Vyššie uvedený kód ukazuje, ako funguje ukladanie do vyrovnávacej pamäte pomocou knižnice vyrovnávacej pamäte uzla. Najprv skontroluje, či sú požadované údaje už uložené vo vyrovnávacej pamäti. Ak údaje nie sú k dispozícii, spustí funkciu na načítanie údajov z databázy a potom uloží načítané údaje do vyrovnávacej pamäte. Nakoniec vráti požadované údaje klientovi ako odpoveď JSON.
3. Povoliť kompresiu HTTP
Kompresia HTTP je technika, ktorú môžete použiť na zníženie veľkosti údajov prenášaných medzi klientom a serverom. Zahŕňa kompresiu odpovedí API na strane servera a ich dekomprimáciu na strane klienta.
Povolením kompresie HTTP je možné výrazne znížiť veľkosť dát odozvy, čo vedie k rýchlejšej dobe odozvy.
Tu je príklad kódu, ktorý ukazuje, ako povoliť kompresiu HTTP pomocou kompresia middleware.
vyjadriť = vyžadovať('expresné');
konšt kompresia = vyžadovať('kompresia');konšt app = express();
app.use (compression());
app.get('/api/data', (req, res) => {
// Spravujte svoju logiku API
});
Tento útržok kódu používa middleware na kompresiu odpovedí API predtým, ako ich vráti klientovi.
4. Implementujte paralelné spracovanie pomocou Promise.all
Paralelné spracovanie pomocou Sľub.všetko metóda je technika používaná na zlepšenie výkonu rozhraní API vykonávaním viacerých asynchrónnych úloh súčasne.
Využitím sily sľubov JavaScriptu vám Promise.all umožňuje vykonať zbierku sľubov súčasne, namiesto toho, aby ste čakali, kým sa každý prísľub vyrieši postupne.
Táto technika je užitočná najmä vtedy, keď máte nezávislé úlohy, ktoré môžu bežať súčasne, ako napríklad vytváranie viacerých súvisiacich požiadaviek API na rôzne koncové body. Súbežným vykonávaním týchto úloh môžete výrazne skrátiť celkový čas vykonávania a zlepšiť odozvu vášho API.
Tu je jednoduchý príklad kódu, ktorý demonštruje, ako implementovať paralelné spracovanie pomocou Promise.all.
konšt vyjadriť = vyžadovať('expresné');
konšt axios = vyžadovať("axios");konšt app = express();
app.get('/api/data', async (req, res) => {
skúste {
konšt request1 = axios.get(' https://api.example.com/endpoint1');
konšt request2 = axios.get(' https://api.example.com/endpoint2');
konšt request3 = axios.get(' https://api.example.com/endpoint3');konšt [odpoveď1, odpoveď2, odpoveď3] = čakaťSľub.all([
žiadosť1,
žiadosť2,
žiadosť3
]);
// Spracujte odpovede podľa potreby
} chytiť (chyba) {
res.status(500.json({ chyba: 'chyba' });
}
});
V tomto príklade kód vytvára požiadavky API na tri rôzne koncové body. Použitím funkcie Promise.all, ktorá odovzdá pole prísľubov, kód čaká, kým sa všetky dokončia, a potom vráti odpovede v poli.
Keď dostanete všetky odpovede, môžete ich spracovať podľa potreby. Pri tomto prístupe by ste však mali byť opatrní a vyhýbať sa nadmernému používaniu, pretože môže preťažiť server a spôsobiť problémy s odozvou API.
5. Použite združovanie databázových pripojení
Združovanie databázových pripojení je metóda, ktorá zahŕňa vytvorenie fondu opakovane použiteľných databázových pripojení na efektívne spracovanie viacerých požiadaviek klientov.
Namiesto vytvorenia nového pripojenia pre každú požiadavku aplikácia opätovne používa existujúce pripojenia z pool, čím sa zníži réžia nadväzovania nových pripojení, výsledkom čoho je rýchlejší a efektívnejší dopyt exekúcie.
Tu je krátky príklad kódu, ktorý demonštruje, ako používať združovanie databázových pripojení Mongoose v aplikácii Express.js.
konšt mangusta = vyžadovať("mongoose");
konšt { pripojenie } = vyžadovať("mongoose");konšt connectionOptions = {
Veľkosť bazéna: 10,
useNewUrlParser: pravda,
použiteUnifiedTopology: pravda
};
mongoose.connect('mongodb://localhost/mydatabase', možnosti pripojenia);
V tomto príklade je vlastnosť veľkosti oblasti pripojení nastavená na 10 – to určuje maximálny počet pripojení v oblasti.
Nastavením tejto konfigurácie môže rozhranie API opätovne použiť pripojenia, čo vedie k zlepšenému výkonu rozhrania API znížením réžie vytvárania nových pripojení pre každú požiadavku.
Uprednostňovanie výkonnosti API pre zisk
Existuje niekoľko krokov, ktoré môžete vykonať na optimalizáciu výkonu vašich rozhraní API Express.js. Rozhrania API hrajú a kľúčovú úlohu, takže je nevyhnutné, aby ste sa zamerali na ich výkon, aby ste zaručili celkový úspech svojho softvér.