שיפור הביצועים

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

עבודה עם משאבים חלקיים

דרך נוספת לשפר את ביצועי הקריאות ל-API היא לבקש החלק של הנתונים הרצויים. כך האפליקציה מאפשרת להימנע מהעברה, ניתוח ואחסון של שדות שאינם נחוצים, כדי להשתמש כמו רשת, מעבד (CPU) וזיכרון, בצורה יעילה יותר.

תשובה חלקית

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

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

דוגמה

בדוגמה הבאה מוצג השימוש בפרמטר fields עם תצוגה ו Video 360 API

בקשה פשוטה: בקשת ה-HTTP הזו מסוג GET משמיטה את הפרמטר fields ו מחזירה את המשאב המלא.

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1

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

200 OK

{
 "advertisers": [
  {
   "name": "advertisers/1",
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  {
   "name": "advertisers/2",
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  ...
 ],
 "nextPageToken": "..."
}

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

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)

תגובה חלקית: בתגובה לבקשה שלמעלה, השרת שולח חזרה תשובה שמכילה מערך מפרסמים מצומצם שכולל רק את מזהה המפרסם, השם המוצג ומזהה השותף של כל מפרסם, אם כיום.

200 OK

{
 "advertisers": [
  {
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1"
  },
  {
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2"
  },
  ...
 ]
}

חשוב לשים לב שהתגובה היא אובייקט JSON שכולל רק את השדות שנבחרו ואת האובייקטים המצורפים של ההורה.

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

סיכום התחביר של הפרמטרים של השדות

הפורמט של ערך הפרמטר של הבקשה fields מבוסס באופן חלש על XPath תחביר. מידע לגבי התחביר הנתמך מופיע בהמשך, ודוגמאות נוספות שמפורטות בקטע הבא.

  • משתמשים ברשימה שמופרדת בפסיקים כדי לבחור כמה שדות.

  • אפשר להשתמש ב-a/b כדי לבחור שדה b שנמצא בתוך השדה a; להשתמש ב-a/b/c כדי לבחור שדה c שמוצב בתוך b.

  • להשתמש בבורר משנה כדי לבקש קבוצה של שדות משנה ספציפיים של מערכים או אובייקטים על ידי הוספת ביטויים בסוגריים "( )".

    לדוגמה: fields=advertisers(advertiserId,generalConfig/domainUrl) מחזירה רק את מזהה המפרסם ואת כתובת ה-URL של הדומיין עבור כל רכיב מערך המפרסמים. אפשר גם לציין שדה משנה אחד, שבו הערך fields=advertisers(advertiserId) זהה ל- fields=advertisers/advertiserId.

דוגמאות נוספות לשימוש בפרמטר של השדות

הדוגמאות הבאות כוללות תיאורים של האופן שבו ערך הפרמטר fields משפיעה על התגובה.

.
מזהים את השדות שרוצים להחזיר, או בוחרים את השדות שנבחרו.

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

הנה כמה דוגמאות ברמת האוסף:

דוגמה השפעה
advertisers החזרת כל הרכיבים ב- מערך advertisers, כולל את כל השדות בכל רכיב, אבל אין שדות אחרים.
advertisers,nextPageToken הפונקציה מחזירה את גם המאפיין nextPageToken וכל הרכיבים מערך advertisers.
advertisers/advertiserId הפונקציה מחזירה רק את הערך advertiserId לכל הרכיבים מערך advertisers.

בכל פעם ששדה מקונן מוחזרת, התשובה כוללת את האובייקטים של ההורה המצורף. שדות ההורה לא כוללים שדות צאצא אחרים, אלא אם גם הם נבחרו במפורש.
advertisers/generalConfig/domainUrl פונקציה זו מחזירה את השדה domainUrl לאובייקט generalConfig, והוא עצמו מקונן מתחת מערך advertisers.

ריכזנו כאן כמה דוגמאות ברמת המשאב:

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

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

דוגמה השפעה
advertisers(advertiserId,generalConfig/domainUrl) הפונקציה מחזירה רק את ערכים של advertiserId ו-GeneralConfig domainUrl עבור כל רכיב ב- advertisers מערך.
טיפול בתשובות חלקיות

אחרי שהשרת מעבד בקשה תקינה שכוללת את השאילתה fields הוא שולח חזרה את קוד הסטטוס 200 OK של HTTP, יחד עם הבקשה . אם בפרמטר השאילתה fields יש שגיאה או שהוא לא תקין מסיבה אחרת, השרת מחזיר את קוד הסטטוס 400 Bad Request של HTTP, יחד עם הודעת השגיאה שאומרת מה הבעיה בבחירת השדות (לדוגמה, "Invalid field selection a/b").