يجب أن تعمل واجهة برمجة التطبيقات بأسرع ما يمكن لخدمة عدد كبير من العملاء. استخدم هذه النصائح لضبط واجهات برمجة التطبيقات الخاصة بك لأقصى سرعة.

عزز التبني السريع لبنية الخدمات المصغرة دور واجهات برمجة التطبيقات كوسيلة أساسية للاتصال من أجل التنمية الحديثة. توفر واجهات برمجة التطبيقات وسيلة فعالة لتبادل البيانات بين العملاء والتطبيقات من جانب الخادم ، وكذلك بين أنظمة الخلفية المختلفة.

يوفر Express.js حلاً أنيقًا لبناء واجهات برمجة تطبيقات RESTful. لكن من الضروري إعطاء الأولوية لمقاييس الأداء طوال عملية التطوير.

هذا يضمن أن واجهات برمجة التطبيقات الخاصة بك لا تعمل بفعالية فحسب ، بل تعمل أيضًا على النحو الأمثل. في النهاية ، ينتج عن تطبيق الويب الجيد الأداء تجربة مستخدم أفضل وفرصة أكبر للنجاح.

تحسين الأداء لواجهات برمجة تطبيقات Express.js REST

يستخدم Express.js طبيعة Node.js غير المتزامنة والبنية القائمة على الأحداث لتحقيق مستويات استثنائية من السرعة والأداء.

ومع ذلك ، فإن تحسين Express.js واجهات برمجة تطبيقات REST يمكن أن تؤدي إلى فوائد أكبر. يتضمن ذلك أوقات استجابة محسّنة بشكل كبير وموثوقية محسّنة وكفاءة متزايدة لتطبيقاتك ، مما يؤدي إلى تجارب مستخدم سلسة وجذابة.

instagram viewer

من خلال تحديد أولويات أداء واجهات برمجة التطبيقات الخاصة بك ، فإنك تمهد الطريق لنجاح برنامجك ككل.

فيما يلي بعض النصائح التي يمكنك استخدامها لتحسين أداء واجهات برمجة تطبيقات REST الخاصة بك.

1. تحسين استعلامات قاعدة البيانات

يمكن أن يؤثر استرداد البيانات ومعالجتها بكفاءة من قاعدة البيانات بشكل كبير على أداء REST APIs.

من خلال تحسين استعلامات قاعدة البيانات ، يمكنك تقليل وقت تنفيذ الاستعلام بشكل كبير وتقليل استهلاك الموارد. سيؤدي ذلك في النهاية إلى تحسين أداء تطبيق Express.js ككل.

فيما يلي بعض النصائح المفيدة لتحسين استعلامات قاعدة البيانات.

  1. يستخدم فهارس قاعدة البيانات. حدد الأعمدة المستخدمة بشكل متكرر في الاستعلامات وقم بإنشاء فهارس مناسبة لهذه الأعمدة. يتيح ذلك لمحرك قاعدة البيانات تحديد موقع البيانات المطلوبة واستردادها بسرعة ، مما يؤدي إلى تنفيذ أسرع للاستعلام.
  2. تنفيذ ترقيم الصفحات. عند التعامل مع مجموعات البيانات الكبيرة ، استخدم ترقيم الصفحات. بدلاً من جلب جميع البيانات مرة واحدة ، حدد كمية البيانات التي يتم إرجاعها في كل استعلام.
  3. تجنب الاستفسارات الزائدة عن الحاجة. قم بتحليل الكود الخاص بك ، وحدد وحذف أي استفسارات زائدة عن الحاجة. يمكن أن تؤدي إعادة هيكلة استفساراتك وفقًا لذلك إلى تحسينات جوهرية في الأداء.

2. استخدام التخزين المؤقت في جميع أنحاء التطبيق الخاص بك

التخزين المؤقت هو تقنية تستخدم لتخزين البيانات التي يتم الوصول إليها بشكل متكرر في ذاكرة تخزين مؤقت ، وهو نظام تخزين مؤقت. ببساطة ، عندما يطلب العميل البيانات ، يتحقق الخادم من ذاكرة التخزين المؤقت أولاً بدلاً من الاستعلام مباشرة عن قاعدة البيانات.

إذا عثر على البيانات المطلوبة في ذاكرة التخزين المؤقت ، فإنه يعيدها على الفور ، متجاوزًا الحاجة إلى مزيد من المعالجة أو الوصول الفعلي إلى قاعدة البيانات. يعمل هذا على تحسين أداء واجهات برمجة التطبيقات بشكل كبير عن طريق تقليل أوقات الاستجابة وتقليل الحمل على التطبيق خاصة عند معالجة استعلامات متعددة.

إليك مثال رمز بسيط يوضح كيفية تنفيذ التخزين المؤقت.

مقدار ثابت صريح = يتطلب('يعبر');
مقدار ثابت NodeCache = يتطلب("عقدة مخبأة");

مقدار ثابت مخبأ = جديد NodeCache () ،
مقدار ثابت التطبيق = صريح () ؛

app.get ("/ api / data"، (مطلوب ، الدقة) => {
مقدار ثابت cacheKey = 'بيانات';
مقدار ثابت cachedData = cache.get (cacheKey) ؛

لو (! cachedData) {
مقدار ثابت fetchedData = fetchDataFromDatabase () ،
cache.set (cacheKey، fetchedData) ؛
cachedData = fetchedData ؛
}

res.json (cachedData) ؛
});

وظيفةfetchDataFromDatabase() {
//... يذهب منطق جلب البيانات هنا ...
يعود بيانات؛
}

يوضح الكود أعلاه كيفية عمل التخزين المؤقت باستخدام مكتبة node-cache. في البداية ، يتحقق مما إذا كانت البيانات المطلوبة مخزنة بالفعل في ذاكرة التخزين المؤقت. إذا لم تكن البيانات موجودة ، فإنها تقوم بتشغيل الوظيفة لجلب البيانات من قاعدة البيانات ، ثم تخزين البيانات التي تم جلبها في ذاكرة التخزين المؤقت. أخيرًا ، يتم إرجاع البيانات المطلوبة إلى العميل كاستجابة JSON.

3. تفعيل ضغط HTTP

ضغط HTTP هو أسلوب يمكنك استخدامه لتقليل حجم البيانات المنقولة بين العميل والخادم. يتضمن ضغط استجابات API على جانب الخادم وفك ضغطها من جانب العميل.

من خلال تمكين ضغط HTTP ، يمكن تقليل حجم حمولات الاستجابة بشكل كبير ، مما يؤدي إلى أوقات استجابة أسرع.

إليك مثال على رمز يوضح كيفية تمكين ضغط HTTP باستخدام الامتداد ضغط الوسيطة.

صريح = يتطلب('يعبر');
مقدار ثابت ضغط = يتطلب('ضغط');

مقدار ثابت التطبيق = صريح () ؛
app.use (ضغط ()) ؛

app.get ("/ api / data"، (مطلوب ، الدقة) => {
// التعامل مع منطق API الخاص بك
});

يستخدم مقتطف الشفرة هذا برمجية وسيطة لضغط استجابات API قبل إعادتها إلى العميل.

4. نفذ المعالجة الموازية باستخدام Promise.all

المعالجة المتوازية باستخدام وعد كل الطريقة هي تقنية تستخدم لتحسين أداء واجهات برمجة التطبيقات من خلال تنفيذ مهام متعددة غير متزامنة في وقت واحد.

من خلال الاستفادة من قوة وعود JavaScript ، يتيح لك Promise.all تنفيذ مجموعة من الوعود في وقت واحد ، بدلاً من انتظار حل كل وعد بالتسلسل.

تكون هذه التقنية مفيدة بشكل خاص عندما يكون لديك مهام مستقلة يمكن تشغيلها في وقت واحد ، مثل إنشاء طلبات متعددة مرتبطة بواجهة برمجة التطبيقات لنقاط نهاية مختلفة. من خلال تنفيذ هذه المهام بالتوازي ، يمكنك تقليل وقت التنفيذ الكلي بشكل كبير وتحسين استجابة واجهة برمجة التطبيقات الخاصة بك.

إليك مثال رمز بسيط يوضح كيفية تنفيذ المعالجة المتوازية باستخدام Promise.all.

مقدار ثابت صريح = يتطلب('يعبر');
مقدار ثابت المحاور = يتطلب("أكسيوس");

مقدار ثابت التطبيق = صريح () ؛

app.get ("/ api / data", غير متزامن (مطلوب ، الدقة) => {
يحاول {
مقدار ثابت request1 = axios.get (' https://api.example.com/endpoint1');
مقدار ثابت request2 = axios.get (' https://api.example.com/endpoint2');
مقدار ثابت request3 = axios.get (' https://api.example.com/endpoint3');

مقدار ثابت [response1، response2، response3] = انتظريعد.الجميع([
طلب 1 ،
الطلب 2 ،
طلب 3
]);

// معالجة الردود حسب الحاجة
} يمسك (خطأ) {
res.status (500) .json ({ خطأ: 'خطأ' });
}
});

في هذا المثال ، تقوم الشفرة بعمل طلبات API لثلاث نقاط نهاية مختلفة. باستخدام وظيفة Promise.all ، لتمرير مجموعة من الوعود ، ينتظر الكود أن ينتهي كل منهم قبل إرجاع الردود في مصفوفة.

عندما تتلقى جميع الردود ، يمكنك معالجتها على النحو المطلوب. ومع ذلك ، يجب أن تكون حذرًا مع هذا الأسلوب وتجنب الاستخدام المفرط ، حيث قد يؤدي إلى زيادة التحميل على الخادم مما يتسبب في اختناقات استجابة API.

5. استخدم تجمع اتصال قاعدة البيانات

تجميع اتصال قاعدة البيانات هو طريقة تتضمن إنشاء مجموعة من اتصالات قاعدة البيانات القابلة لإعادة الاستخدام للتعامل مع طلبات العملاء المتعددة بكفاءة.

بدلاً من إنشاء اتصال جديد لكل طلب ، يعيد التطبيق استخدام الاتصالات الموجودة من ، مما يقلل من النفقات العامة لإنشاء اتصالات جديدة ، مما يؤدي إلى استعلام أسرع وأكثر كفاءة تنفيذ.

فيما يلي مثال على رمز قصير يوضح كيفية استخدام تجميع اتصال قاعدة البيانات مع النمس في تطبيق Express.js.

مقدار ثابت النمس = يتطلب('النمس');
مقدار ثابت {اتصال} = يتطلب('النمس');

مقدار ثابت ConnectionOptions = {
حجم تجمع: 10,
useNewUrlParser: حقيقي,
استخدامUnifiedTopology: حقيقي
};

mongoose.connect ("mongodb: // localhost / mydatabase"، connectOptions) ؛

في هذا المثال ، تم تعيين خاصية حجم تجمع الاتصال إلى 10 — وهذا يحدد الحد الأقصى لعدد الاتصالات في التجمع.

من خلال تعيين هذا التكوين ، يمكن لواجهة برمجة التطبيقات إعادة استخدام الاتصالات ، مما يؤدي إلى تحسين أداء واجهة برمجة التطبيقات عن طريق تقليل النفقات العامة لإنشاء اتصالات جديدة لكل طلب.

تحديد أولويات أداء API لتحقيق الربح

هناك العديد من الخطوات التي يمكنك اتخاذها لتحسين أداء Express.js APIs. تلعب واجهات برمجة التطبيقات أ دورًا حاسمًا ، لذلك من الضروري أن تركز على أدائهم لضمان النجاح الشامل لك برمجة.