API трябва да работи възможно най-бързо, за да обслужва потенциално огромен брой клиенти. Използвайте тези съвети, за да настроите своите API за максимална скорост.
Бързото приемане на архитектурата на микроуслугите затвърди ролята на API като основно средство за комуникация за съвременното развитие. API осигуряват ефикасно средство за обмен на данни между клиенти и приложения от страната на сървъра, както и между различни бекенд системи.
Express.js предоставя елегантно решение за изграждане на RESTful API. Но е важно да се даде приоритет на мерките за ефективност по време на разработката.
Това гарантира, че вашите API не само функционират ефективно, но и работят оптимално. В крайна сметка едно добре работещо уеб приложение води до по-добро потребителско изживяване и по-голям шанс за успех.
Оптимизиране на производителността за Express.js REST API
Express.js използва асинхронния характер на Node.js и управляваната от събития архитектура, за да постигне изключителни нива на скорост и производителност.
Въпреки това оптимизирането на Express.js API на REST може да донесе още по-големи ползи. Те включват значително подобрено време за реакция, подобрена надеждност и повишена ефективност на вашите приложения, което води до безпроблемно и ангажиращо потребителско изживяване.
Като приоритизирате ефективността на вашите API, вие проправяте пътя за успеха на вашия софтуер като цяло.
Ето някои от съветите, които можете да използвате, за да подобрите производителността на вашите REST API.
1. Оптимизиране на заявките към базата данни
Ефективното извличане и манипулиране на данни от база данни може значително да повлияе на производителността на REST API.
Чрез оптимизиране на заявките към базата данни можете значително да намалите времето за изпълнение на заявката и да намалите потреблението на ресурси. Това в крайна сметка ще подобри производителността на вашето Express.js приложение като цяло.
Ето някои полезни съвети за оптимизиране на заявките към базата данни.
- Използвайте индекси на бази данни. Идентифицирайте често използваните колони в заявките и създайте подходящи индекси за тези колони. Това позволява на двигателя на базата данни бързо да локализира и извлича необходимите данни, което води до по-бързо изпълнение на заявката.
- Приложете пагинация. Когато работите с големи масиви от данни, използвайте пагинация. Вместо да извличате всички данни наведнъж, ограничете количеството данни, върнати във всяка заявка.
- Избягвайте излишни заявки. Анализирайте кода си, идентифицирайте и пропуснете всички излишни заявки. Рефакторингът на вашите заявки съответно може да доведе до значителни подобрения на производителността.
2. Използвайте кеширане в цялото си приложение
Кеширането е техника, използвана за съхраняване на често достъпни данни в кеш памет, система за временно съхранение. Казано по-просто, когато клиент поиска данни, сървърът първо проверява своя кеш, вместо директно да прави запитвания към базата данни.
Ако открие исканите данни в кеша, той ги връща незабавно, заобикаляйки необходимостта от допълнителна обработка или действителния достъп до базата данни. Това значително подобрява производителността на API чрез намаляване на времето за отговор и минимизиране на натоварването на приложението, особено при обработка на множество заявки.
Ето един прост пример за код, който демонстрира как да внедрите кеширане.
конст експрес = изискват("експресен");
конст NodeCache = изискват('node-cache');конст кеш = нов NodeCache();
конст приложение = експрес();app.get('/api/данни', (req, res) => {
конст cacheKey = 'данни';
конст cachedData = cache.get (cacheKey);
ако (!cachedData) {
конст fetchedData = fetchDataFromDatabase();
cache.set (cacheKey, fetchedData);
кеширани данни = извлечени данни;
}res.json (кеширани данни);
});
функцияfetchDataFromDatabase() {
//... логиката за извличане на данни е тук ...
връщане данни;
}
Кодът по-горе демонстрира как работи кеширането с помощта на библиотеката node-cache. Първоначално той проверява дали исканите данни вече са съхранени в кеша. Ако данните не присъстват, той задейства функцията за извличане на данни от базата данни, след което съхранява извлечените данни в кеша. Накрая връща исканите данни на клиента като JSON отговор.
3. Активиране на HTTP компресия
HTTP компресията е техника, която можете да използвате, за да намалите размера на данните, прехвърляни между клиент и сървър. Това включва компресиране на отговорите на API от страна на сървъра и тяхното декомпресиране от страна на клиента.
Чрез активиране на HTTP компресия, размерът на полезния товар на отговора може да бъде значително намален, което води до по-бързо време за отговор.
Ето пример за код, който демонстрира как да активирате HTTP компресия с помощта на компресия междинен софтуер.
експрес = изискват("експресен");
конст компресия = изискват("компресия");конст приложение = експрес();
app.use (компресия());
app.get('/api/данни', (req, res) => {
// Боравете с вашата API логика
});
Този кодов фрагмент използва междинен софтуер за компресиране на отговорите на API, преди да ги върне на клиента.
4. Приложете паралелна обработка с помощта на Promise.all
Използване на паралелна обработка Обещавам всички методът е техника, използвана за подобряване на производителността на API чрез едновременно изпълнение на множество асинхронни задачи.
Като използва силата на обещанията на JavaScript, Promise.all ви позволява да изпълните колекция от обещания едновременно, вместо да чакате всяко обещание да се разрешава последователно.
Тази техника е особено полезна, когато имате независими задачи, които могат да се изпълняват едновременно, като например създаване на множество свързани API заявки към различни крайни точки. Като изпълнявате тези задачи паралелно, можете значително да намалите общото време за изпълнение и да подобрите отзивчивостта на вашия API.
Ето един прост пример за код, демонстриращ как да внедрите паралелна обработка с помощта на Promise.all.
конст експрес = изискват("експресен");
конст аксиос = изискват("аксиос");конст приложение = експрес();
app.get('/api/данни', асинхронен (req, res) => {
опитвам {
конст заявка1 = axios.get(' https://api.example.com/endpoint1');
конст заявка2 = axios.get(' https://api.example.com/endpoint2');
конст заявка3 = axios.get(' https://api.example.com/endpoint3');конст [отговор1, отговор2, отговор3] = изчакайтеобещание.всичко([
заявка1,
заявка2,
заявка3
]);
// Обработка на отговорите според нуждите
} улов (грешка) {
res.status(500).json({ грешка: "грешка" });
}
});
В този пример кодът прави API заявки към три различни крайни точки. С помощта на функцията Promise.all, предавайки масив от обещания, кодът изчаква всички да завършат, преди да върне отговорите в масив.
Когато получите всички отговори, можете да ги обработите според изискванията. Трябва обаче да внимавате с този подход и да избягвате прекомерната употреба, тъй като може да претовари сървъра, причинявайки затруднения в отговора на API.
5. Използвайте обединяване на връзки към база данни
Обединяването на връзки към база данни е метод, който включва създаване на група от многократно използвани връзки към база данни за ефективно обработване на множество клиентски заявки.
Вместо да установява нова връзка за всяка заявка, приложението използва повторно съществуващите връзки от пул, намалявайки режийните разходи за установяване на нови връзки, което води до по-бързи и по-ефективни заявки екзекуция.
Ето кратък пример за код, демонстриращ как да използвате обединяване на връзка към база данни с Mongoose в приложение Express.js.
конст мангуста = изискват("мангуста");
конст { връзка } = изискват("мангуста");конст ConnectionOptions = {
размер на басейна: 10,
useNewUrlParser: вярно,
useUnifiedTopology: вярно
};
mongoose.connect('mongodb://localhost/mydatabase', Опции за връзка);
В този пример свойството размер на пула за връзки е зададено на 10—това определя максималния брой връзки в пула.
Чрез задаване на тази конфигурация API може да използва повторно връзките, което води до подобрена производителност на API чрез намаляване на разходите за установяване на нови връзки за всяка заявка.
Даване на приоритет на производителността на API за печалба
Има няколко стъпки, които можете да предприемете, за да оптимизирате производителността на вашите Express.js API. API играят a решаваща роля, така че е важно да се съсредоточите върху тяхното представяне, за да гарантирате цялостния си успех софтуер.