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