קריאות API: פחות עבודה וניסיונות חוזרים מבוקרים

בקצרה

API יעיל מונע העברות מיותרות ושומר על עדכניות ונכונות הנתונים. מספר קריאות, נפח ומשך המתנה הם מדדים נפרדים.

מסדרון שרתים ורשתות מאובטח ללא אנשים
במאמר זה

השוואת אותו מסלול

דוגמה דמיונית בקילובייט עשרוני: תחילה 100 קריאות של 100 kB, ובהמשך 20 של 50 kB. הנפח יורד מ־10000 ל־1000 kB, ירידה של 90 %. אין בכך הוכחה לירידה זהה בהשהיה. החישוב כולל רק את תוכן התשובות, ללא בקשות וכותרות.

מדד דמיונימקוריחלופה
קריאות10020
נפח לתשובה100 kB50 kB
נפח כולל10000 kB1000 kB
משך המסלוליש למדודיש למדוד

לצמצם לפני הוספת מקביליות

  • בקשו רק שדות נחוצים ופעלו לפי חוזה הדפדוף. אצוות דורשות גבולות וטיפול בתוצאות חלקיות; עמוד גדול אינו תמיד מהיר יותר.
  • השתמשו שוב בחיבורים ובתשובות כשההקשר והעדכניות מאפשרים. הגבילו מקביליות ומדדו גם תורים ועבודת שרת.
  • קבעו מועד סיום כולל ומספר ניסיונות מרבי. פזרו ניסיונות לכשל זמני עם רכיב המתנה אקראי ובדקו אילו שכבות כבר מנסות שוב.

לא לבצע פעולה שהושלמה פעמיים

פקיעת זמן בצד הלקוח אינה מוכיחה ביטול בשרת. לפני יצירה או תשלום חוזרים בדקו מצב ומנגנון אידמפוטנטיות של הספק. השוו זמן, שגיאות ונכונות בעומס מייצג.

מקורות ראשוניים

בדיקת עבודה מאחורי תגובת API אחת.

שאילתת GraphQL אחת יכולה להפעיל קריאות רבות במורד הזרם. השהייה גלויה ללקוח עשויה להסתיר את עלות הרזולוטורים, הרשימות והקשרים שעברו מעבר.

  • מעקב אחר פעולה מהלקוח לשירותי במורד הזרם.
  • השווה עלות שדה ונפח שימושי בפועל.
  • רשימות קשורות ושאילתות חוזרות לפני אחסון במטמון.

מקור ראשוני: OWASP — GraphQL Cheat Sheet. שיטה קשורה: קריאת המדריך המעשי.

Retry-After: המתנה, תקציב והחלטת ניסיון חוזר

הערות המקורות המפורטות זמינות באנגלית במהדורה זו.

Reducing API calls includes controlling repetition

An API optimisation should count attempts reaching the dependency rather than only requests initiated by the screen.

  • Trace SDK and proxy retries under one logical identifier.
  • Avoid shortening server instructions merely to fit a budget.
  • Verify an uncertain write’s state before creating a new intention.

Explore Retry-After and the retry model →

References reviewed · RFC 9110 · §9.2.2, §10.2.3 · RFC 6585 · §4 · AWS