في خلاصات الدفعات، يتم تحديد إصدار العنصر من خلال حقل
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"، بافتراض أنّ خلاصة البيانات تستخدم مخطّط المستودع في الإصدار 1:
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
. ينتج عن الكيان الذي يحمل
رقم التعريف "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 لمطعم جديد تمامًا. في ما يلي طلب POST لبروتوكول HTTP لهذا الكيان الذي يحمل المعرّف "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
. وبالتالي، يؤدي
الكيان الذي يحمل المعرّف "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 وعرضه إلا إذا كان يحتوي على أحدث إصدار. يُرجى العِلم أنّه تستغرق عادةً معالجة العناصر المُرسَلة من خلال الحِزم بضعة أيام، في حين تتم معالجة العناصر المُرسَلة من خلال واجهة برمجة التطبيقات المتزايدة على الفور.
أفضل الممارسات
- اضبط الحقلَين
update_time
وdateModified
على "معدّل متزايد" و"مجموعة"، على التوالي، وفقًا لوقت تعديل العنصر في أنظمتك. - إذا كانت خلاصة دفعة (ملف) تسرد أكثر من عنصر واحد من المستوى الأعلى (على سبيل المثال، إقران المطاعم بالخدمات والقوائم)، عدِّل الطابع الزمني مع تعديل بيانات العنصر.
- في المكالمات المتزايدة، ننصحك بشدة بضبط الحقل
update_time
بشكل صريح. - من الضروري أن يتم أيضًا تعديل الطابع الزمني (
dateModified
) للخلاصة المعنيّة بعد إجراء طلب متزايد قبل أن تجلب Google الخلاصة مرة أخرى.
مثال
تُجلب Google الملف التالي في الساعة 11 صباحًا في 28-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". ولأنّ الخلاصات المجمّعة تستغرق بعض الوقت في المعالجة، يتم عرض هذه الإعلانات عادةً بعد يومَين.
في الساعة 1 بعد الظهر، يُجري الشريك تعديلاً على رقم هاتف المطعم، ما يؤدي إلى إجراء المكالمة المتزايدة التالية التي تتلقّاها 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"
...
}
]
}
في اليوم التالي (29-12-2018) في الساعة 11 مساءً، يتم جلب الخلاصة مرة أخرى. لا يزال المطعم يعرض الإصدار نفسه (الساعة 1 بعد الظهر في 28 كانون الأول (ديسمبر)، لذا يتم حذف هذا الكيان والاحتفاظ بالإصدار الحالي. ومع ذلك، تم تعديل عنصرَي القائمة والخدمة بإصدار جديد.
الطوابع الزمنية لخريطة الموقع
لا يؤثّر عنوان الاستجابة last-modified
في خريطة الموقع في
إصدار العنصر. ويؤثر ذلك في وقت جلب Google للخلاصة.
أفضل الممارسات
- عدِّل عنوان الاستجابة فقط عندما تكون جميع الملفات محدّثة وجاهزة لجلبها.
- استخدِم
update_time
وdelete_time
بشكل صريح في القيمة المتزايدة. - اضبط
update_time
وdelete_time
وdateModified
على وقت تغيُّر البيانات من جانبك.