גרסאות v1 בפידים מסוג אצווה

בפידים של הקבוצות, גרסת הישות נקבעת באמצעות השדה dateModified במעטפה של הפיד:

{
  "@context": "http://schema.googleapis.com",
  "dateModified": "2018-12-28T06:30:00:123-07:00",
  "@type": "DataFeed",
  "dataFeedElement": [
    /* All the items that are part of this feed go here */
  ]
}

לכל ישות הרשומה בשדה dataFeedElement יש את אותה חותמת זמן, כפי שמופיע במעטפה.

לדוגמה, יכול להיות שיש לכם את הפיד הבא עם שתי ישויות:

{
  "@context": "http://schema.googleapis.com",
  "@type": "DataFeed",
  "dateModified": "2018-12-28T06:30:00:123-07:00",
  "dataFeedElement": [
    {
      "@type": "Restaurant",
      "@id": "http://www.provider.com/somerestaurant",
      ...
    },
    {
      "@type": "Menu",
      "@id": "http://www.provider.com/somerestaurant/menu/1"
      ...
    }
  ]
}

גם ישויות התפריט וגם המסעדות, לאחר קבלתן והעיבוד שלהן, יפורסמו בנפרד בתור "2018-12-28T06:30:00:123-07:00"

גרסאות עם עדכונים מצטברים

כששולחים ישות באמצעות עדכוני מלאי, הגרסה מוגדרת באמצעות השדה update_time (במקרה של קריאה להוספה/עדכון) או בשדה delete_time (במקרה של שיחת מחיקה). מכיוון ששדות אלה הם אופציונליים, חותמת הזמן שהוגדרה כברירת מחדל מוגדרת כמועד שבו Google קיבלה את השיחה.

דוגמה 1: Update_time הוגדר במפורש

נניח שהשיחה המצטברת הבאה היא בימים 2018-12-28T06:30:10:123-07:00 עבור מסעדה חדשה לגמרי. זוהי בקשת ה-HTTP POST של הישות הזו עם המזהה "http://www.provider.com/somerestaurant" בהנחה שפיד הנתונים משתמש בסכימת המלאי v1:

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json

למטה, גוף ה-JSON המטען מכיל את השדה update_time. הישות עם המזהה ID "http://www.provider.com/somerestaurant" מסתיימת בישות הזו כ-6:30:00 ולא כשהיא מתקבלת (עשרה שניות אחר כך ב- 6:30:10):

{
// This envelope is to be used for incremental.
  "entity": {
    // Note: "data" is not serialized as a string in our example for readability.
    "data": "[entity in JSON format serialized as a string]",
    "vertical": "FOODORDERING"
  },
  "update_time":"2018-12-28T06:30:00:123-07:00"
}

דוגמה 2: Update_time הוגדר באופן לא מפורש

נניח שהשיחה המצטברת הבאה היא בימים 2018-12-28T06:30:10:123-07:00 עבור מסעדה חדשה לגמרי. הנה בקשת ה-HTTP POST של הישות הזו עם המזהה "http://www.provider.com/somerestaurant" בהנחה שהפיד משתמש בסכימת המלאי v1:

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json

למטה, גוף ה-loadload של JSON לא מכיל את השדה update_time. הישות עם המזהה "http://www.provider.com/somerestaurant" לכן התוצאה של הישות הזו היא 6:30:10:

{
// This envelope is to be used for incremental.
  "entity": {
    //Note: "data" is not serialized as a string in our example for readability.
    "data": "[entity in JSON format serialized as a string]",
    "vertical": "FOODORDERING"
  }
}

גרסאות בין מקבץ לבין מצטבר

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

שיטות מומלצות

  • מגדירים את השדות update_time ו-dateModified במצטבר ובקבוצה, בהתאמה, בהתאם למועד שבו הישות השתנתה במערכות שלכם.
  • אם בפיד גדול (קובץ) מופיעות יותר מישות אחת ברמה העליונה (לדוגמה, אתם מתאימים בין המסעדות לשירותים ולתפריטים), אתם יכולים לעדכן את חותמת הזמן בזמן שהנתונים של הישות מתעדכנים.
  • בשיחות מצטברות, מומלץ מאוד להגדיר את השדה update_time באופן מפורש.
  • חשוב מאוד להקפיד על כל שיחה שמתרחשת לאחר פרק זמן מסוים של התקשרות, כי גם חותמת הזמן של הפיד המתאימה (dateModified) מתעדכנת לפני ש-Google מאחזרת אותה שוב.

דוגמה

Google מאחזרת את הקובץ הבא בשעה 11:00 ב-20.12.2018 במסעדה חדשה :

{
  "@context": "http://schema.googleapis.com",
  "@type": "DataFeed",
  "dateModified": "2018-12-28T06:30:00-07:00",
  "dataFeedElement": [
    {
      "@type": "Restaurant",
      "@id": "http://www.provider.com/newrestaurant",
      ...
    },
    {
      "@type": "Menu",
      "@id": "http://www.provider.com/newrestaurant/menu/1"
      ...
    }
    {
      "@type": "Service",
      "@id": "http://www.provider.com/newrestaurant/service/1"
      ...
    }
  ]
}

העיבוד של הישויות האלה הסתיים בהצלחה, והן מתפרסמות בפורמט "2018-12-28T06:30:00-07:00". העיבוד של פידים באצווה נמשך זמן רב, ולכן בדרך כלל הם מוצגים יומיים לאחר מכן.

עם זאת, בשעה 13:00, המערכת של השותף תבצע עדכון למספר הטלפון של המסעדה, כך שהתוצאה תהיה שיחה מצטברת בהמשך, ש-Google תקבל בשעה 13:05 (5 שניות לאחר מכן):

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
{
// This envelope is to be used for incremental.
  "entity": {
    //Note: "data" is not serialized as a string in our example for readability.
    "data": "[entity in JSON format serialized as a string]",
    "vertical": "FOODORDERING"
  },
  "update_time":"2018-12-28T13:00:00-07:00"
}

update_time מסופק באופן מפורש, וגדול יותר (מהחדש יותר) מהגרסה הקודמת (6:30 באותו יום), כך שישות המסעדה נקראת עכשיו "2018-12-28T13:00:00-07:00" עם זאת, הישויות ותפריטי השירות עדיין ממוחשבים כ- "2018-12-28T06:30:00-07:00".

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

{
  "@context": "http://schema.googleapis.com",
  "@type": "DataFeed",
  "dateModified": "2018-12-28T13:00:00-07:00",
  "dataFeedElement": [
    {
      "@type": "Restaurant",
      "@id": "http://www.provider.com/newrestaurant",
      ...
    },
    {
      "@type": "Menu",
      "@id": "http://www.provider.com/newrestaurant/menu/1"
      ...
    }
    {
      "@type": "Service",
      "@id": "http://www.provider.com/newrestaurant/service/1"
      ...
    }
  ]
}

ביום המחרת (2018-19-29) בשעה 23:00, הפיד מאוחזר שוב. הגרסה של המסעדה עדיין זהה (23:00 ב-28 בדצמבר), כך שהישות הזו מוסרת והגרסה הנוכחית נשמרת. עם זאת, הישויות 'תפריט' ו'שירותים' מתעדכנות בגרסה חדשה.

חותמות זמן של ה-sitemap

כותרת התגובה last-modified ב-sitemap לא משפיעה על הגרסה של ישות. היא משפיעה מתי הפיד נשלף על ידי Google.

שיטות מומלצות

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