การกำหนดเวอร์ชัน 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 จะมีการประทับเวลาเดียวกันกับที่แสดงในซองจดหมาย

ตัวอย่างเช่น คุณอาจมีฟีดต่อไปนี้ซึ่งมีเอนทิตี 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 เป็นเวลาที่ข้อมูลมีการเปลี่ยนแปลงจากฝั่งคุณ