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

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

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

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

תשובה חלקית

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

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

דוגמה

בדוגמה הבאה מוצג השימוש בפרמטר fields עם API של Display & Video 360.

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

GET https://displayvideo.googleapis.com/v4/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/v4/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 משפיע על התגובה.

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

הערך של פרמטר הבקשה 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, הוא שולח בחזרה קוד סטטוס HTTP‏ 200 OK יחד עם הנתונים המבוקשים. אם יש שגיאה בפרמטר השאילתה fields או שהוא לא תקין מסיבה אחרת, השרת מחזיר את קוד הסטטוס 400 Bad Request של HTTP, יחד עם הודעת שגיאה שמציינת מה הבעיה בבחירת השדות (לדוגמה, "Invalid field selection a/b").