בפידים באצווה, הגרסה של הישות נקבעת באמצעות
השדה 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
למטה, גוף המטען הייעודי (payload) של JSON מכיל את השדה update_time
. הישות עם
מזהה "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&q
uot;
},
"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
למטה, גוף המטען הייעודי (payload) של 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 ב-28 בדצמבר 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/newrestaur
ant/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": "FOODORDERI
NG"
},
"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/newrestaur
ant/menu/1"
...
}
{
"@type": "Service",
"@id": "http://www.provider.com/newrestaurant/service/1"
...
}
]
}
למחרת (29 בדצמבר 2018) בשעה 23:00, הפיד יאוחזר שוב. המסעדה עדיין יש את אותה גרסה (13:00 ב-28 בדצמבר), ולכן הישות הזו תוסר והגרסה הנוכחית תישמר. עם זאת, הישויות 'תפריט' ו'שירות' עודכן בגרסה חדשה.
חותמות זמן של קובצי Sitemap
כותרת התגובה last-modified
ב-sitemap לא משפיעה על
הגרסה של הישות. היא משפיעה על מתי האחזור של הפיד על ידי Google.
שיטות מומלצות
- לעדכן את כותרת התשובה רק כשכל הקבצים מעודכנים ומוכנים תאוחזר.
- שימוש מפורש ב-
update_time
וב-delete_time
מצטברות. - הגדרה של
update_time
,delete_time
ו-dateModified
כשהנתונים משתנים בצד שלך.