ในฟีดกลุ่ม ระบบจะกำหนดเวอร์ชันของเอนทิตีผ่านช่อง 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
จะมีการประทับเวลาเดียวกันกับที่แสดงในซองจดหมาย
ตัวอย่างเช่น คุณอาจมีฟีดต่อไปนี้ซึ่งมีเอนทิตี 2 รายการ
{
"@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 อย่างชัดแจ้ง
สมมติว่าได้รับคําเรียกเพิ่มต่อไปนี้ในวันที่ 28-12-2018T06: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
เอนทิตีที่มีรหัส "http://www.provider.com/somerestaurant" ทำให้เอนทิตีนี้มีเวอร์ชันเป็น 6:30:00 ไม่ใช่เวลาที่รับ (10 วินาทีต่อมาที่ 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 โดยนัย
สมมติว่าได้รับคําเรียกเพิ่มต่อไปนี้ในวันที่ 28-12-2018T06: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
เอนทิตีที่มีรหัส "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 เฉพาะในกรณีที่เป็นเวอร์ชันล่าสุดเท่านั้น โปรดทราบว่าโดยทั่วไปแล้ว ระบบจะใช้เวลา 2-3 วันในการประมวลผลเอนทิตีที่ส่งผ่านกลุ่ม แต่ระบบจะประมวลผลเอนทิตีที่ส่งผ่าน API แบบเพิ่มทันที
แนวทางปฏิบัติแนะนำ
- ตั้งค่าช่อง
update_time
และdateModified
เป็นการเพิ่มทีละรายการและเป็นกลุ่มตามลำดับ ตามเวลาที่แก้ไขเอนทิตีในระบบ - หากฟีดกลุ่ม (ไฟล์) แสดงเอนทิตีระดับบนสุดมากกว่า 1 รายการ (เช่น คุณจับคู่ร้านอาหารกับบริการและเมนู) ให้อัปเดตการประทับเวลาเมื่อมีการอัปเดตข้อมูลของเอนทิตี
- ในการเรียกใช้ที่เพิ่มขึ้น เราขอแนะนําอย่างยิ่งให้คุณตั้งค่าช่อง
update_time
อย่างชัดเจน - เมื่อมีการเรียกข้อมูลเพิ่มเติม คุณต้องอัปเดตการประทับเวลา (
dateModified
) ของฟีดที่เกี่ยวข้องด้วยก่อนที่ Google จะดึงข้อมูลอีกครั้ง
ตัวอย่าง
Google ดึงข้อมูลไฟล์ต่อไปนี้เมื่อเวลา 11:00 น. ของวันที่ 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" เนื่องจากฟีดกลุ่มต้องใช้เวลาในการประมวลผล ฟีดเหล่านี้จึงมักจะแสดงหลังจากผ่านไป 2 วัน
อย่างไรก็ตาม เวลา 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
ระบุไว้อย่างชัดเจนและมากกว่า (ใหม่กว่า) เวอร์ชันก่อนหน้า (06: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) เวลา 23:00 น. ระบบจะดึงข้อมูลฟีดอีกครั้ง ร้านอาหารยังคงมีเวอร์ชันเดิม (13:00 น. ของวันที่ 28 ธันวาคม) ระบบจึงจะทิ้งเอนทิตีนี้และเก็บเวอร์ชันปัจจุบันไว้ อย่างไรก็ตาม เอนทิตีเมนูและบริการได้รับการอัปเดตเป็นเวอร์ชันใหม่
การประทับเวลาของ Sitemap
ส่วนหัวการตอบกลับ last-modified
ใน Sitemap ไม่ส่งผลต่อเวอร์ชันของเอนทิตี โดยจะส่งผลต่อเวลาที่ Google ดึงข้อมูลฟีด
แนวทางปฏิบัติแนะนำ
- อัปเดตส่วนหัวการตอบกลับเฉพาะเมื่อไฟล์ทั้งหมดเป็นเวอร์ชันล่าสุดและพร้อมที่จะดึงข้อมูล
- ใช้
update_time
และdelete_time
อย่างชัดเจนในรายการเพิ่มเติม - ตั้งค่า
update_time
,delete_time
และdateModified
เป็นเวลาที่ข้อมูลมีการเปลี่ยนแปลงจากฝั่งคุณ