Pembuatan versi v1 di feed batch

Di feed batch Anda, versi entity ditentukan melalui Kolom dateModified di amplop feed:

{
  "@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 */
  ]
}

Semua entity yang tercantum di kolom dataFeedElement akan memiliki stempel waktu yang sama, seperti yang tercantum dalam amplop.

Misalnya, Anda dapat memiliki feed berikut dengan dua entitas:

{
  "@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"
      ...
    }
  ]
}

Baik menu maupun entitas restoran, setelah diterima dan diproses, akan secara individual dibuat versi "2018-12-28T06:30:00:123-07:00".

Pembuatan versi dengan update bertahap

Saat mengirim entitas menggunakan update inventaris, versi disetel melalui kolom update_time (dalam kasus panggilan tambahkan/update) atau delete_time (untuk panggilan hapus). Karena {i>field<i} ini bersifat opsional, stempel waktu default disetel ke waktu Google menerima panggilan.

Contoh 1: update_time ditetapkan secara eksplisit

Misalkan panggilan inkremental berikut diterima pada 28-12-2018T06:30:10:123-07:00 untuk restoran yang benar-benar baru. Berikut adalah permintaan POST HTTP untuk entity tersebut dengan ID "http://www.provider.com/somerestaurant", dengan asumsi feed data menggunakan skema inventaris v1:

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json

Di bawah ini, isi payload JSON berisi kolom update_time. Entitas dengan ID "http://www.provider.com/somerestaurant" mengakibatkan entity ini menjadi diberi versi 6:30:00 dan bukan saat diterima (sepuluh detik kemudian 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"
}

Contoh 2: update_time ditetapkan secara implisit

Misalkan panggilan inkremental berikut diterima pada 28-12-2018T06:30:10:123-07:00 untuk restoran yang benar-benar baru. Berikut adalah permintaan POST HTTP untuk entity tersebut dengan ID "http://www.provider.com/somerestaurant", dengan asumsi feed menggunakan ID skema inventaris:

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json

Di bawah ini, isi payload JSON tidak berisi kolom update_time. Tujuan entitas dengan ID "http://www.provider.com/somerestaurant" sehingga menghasilkan entitas ini dibuat versi 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"
  }
}

Pembuatan versi antara batch dan inkremental

Entitas yang dikirim ke Google akan diproses dan ditayangkan hanya jika entitas tersebut memiliki . Perhatikan bahwa entitas yang dikirim melalui batch umumnya membutuhkan waktu beberapa hari untuk mendapatkan diproses, sedangkan entitas yang dikirim melalui API inkremental akan diproses segera.

Praktik terbaik

  • Tetapkan kolom update_time dan dateModified secara inkremental dan batch, sesuai dengan waktu entitas dimodifikasi di sistem Anda.
  • Jika feed batch (file) mencantumkan lebih dari satu entitas level teratas (misalnya, Anda pasangkan restoran Anda dengan layanan dan menu), lalu perbarui stempel waktu sebagai data suatu entity akan diperbarui.
  • Dalam panggilan inkremental, kami sangat menyarankan Anda Kolom update_time.
  • Sangat penting bahwa setelah panggilan inkremental dilakukan, feed yang sesuai stempel waktu (dateModified) juga akan diperbarui sebelum Google mengambilnya lagi.

Contoh

Google mengambil file berikut pada pukul 11.00 pada 28-12-2018 untuk versi yang benar-benar baru restoran:

{
  "@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"
      ...
    }
  ]
}

Entitas ini berhasil diproses dan dibuat versinya sebagai &quot;2018-12-28T06:30:00-07:00&quot;. Karena pemrosesan feed batch membutuhkan waktu, biasanya ditayangkan 2 hari kemudian.

Namun, pada pukul 13.00, sistem partner memperbarui nomor telepon restoran yang menghasilkan panggilan inkremental berikut, yang diterima Google pukul 13.05 (5 detik kemudian):

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 disediakan secara eksplisit, dan lebih besar (lebih baru) daripada versi sebelumnya (pukul 06.30 di hari yang sama), jadi entitas restoran tersebut sekarang diberi versi "2018-12-28T13:00:00-07:00". Namun, entitas menu dan layanan masih memiliki versi "2018-12-28T06:30:00-07:00".

Ada panggilan inkremental, sehingga feed batch akan diperbarui dengan stempel waktu yang sesuai. Selain itu, perubahan yang sesuai diterapkan ke entitas yang relevan (nomor telepon entitas restoran telah diperbarui).

{
  "@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"
      ...
    }
  ]
}

Keesokan harinya (29-12-2018) pukul 23.00, feed akan diambil lagi. Restoran masih memiliki versi yang sama (13.00 pada 28 Desember), sehingga entitas ini dihapus dan versi saat ini akan dipertahankan. Namun, entitas Menu dan Layanan dengan versi baru.

Stempel waktu peta situs

Header respons last-modified di peta situs tidak memengaruhi dari suatu entitas. Kebijakan ini memengaruhi kapan feed diambil oleh Google.

Praktik terbaik

  • Perbarui header respons hanya jika semua file sudah yang terbaru dan siap harus diambil.
  • Gunakan update_time dan delete_time secara eksplisit secara bertahap.
  • Tetapkan update_time, delete_time, dan dateModified ke saat data berubah di pihak Anda.