Dalam feed batch, versi entitas ditentukan melalui
kolom dateModified
dalam 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 entitas 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"
...
}
]
}
Entitas menu dan restoran, setelah diterima dan diproses, akan diberi versi masing-masing sebagai "2018-12-28T06:30:00:123-07:00".
Pembuatan versi dengan update inkremental
Saat mengirim entity menggunakan update inventaris, versi ditetapkan melalui
kolom update_time
(dalam kasus panggilan tambahkan/perbarui) atau kolom delete_time
(dalam kasus panggilan hapus). Karena kolom ini bersifat opsional, stempel waktu default ditetapkan ke saat 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 entitas 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" akan membuat entitas ini
memiliki versi 6:30:00, bukan saat diterima (sepuluh detik kemudian pada
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 entitas tersebut dengan ID "http://www.provider.com/somerestaurant", dengan asumsi feed 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 tidak berisi kolom update_time
. Entity
dengan ID "http://www.provider.com/somerestaurant" akan menghasilkan
entity ini dengan 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
Entity yang dikirim ke Google hanya diproses dan ditayangkan jika memiliki versi terbaru. Perhatikan bahwa entitas yang dikirim melalui batch biasanya memerlukan waktu beberapa hari untuk diproses, sedangkan entitas yang dikirim melalui API inkremental akan langsung diproses.
Praktik terbaik
- Tetapkan kolom
update_time
dandateModified
secara bertahap dan dalam batch, sesuai dengan waktu entitas diubah di sistem Anda. - Jika feed batch (file) mencantumkan lebih dari satu entitas tingkat atas (misalnya, Anda menyambungkan restoran dengan layanan dan menu), perbarui stempel waktu saat data entitas diperbarui.
- Dalam panggilan inkremental, sebaiknya Anda menetapkan kolom
update_time
secara eksplisit. - Setelah panggilan inkremental dilakukan, stempel waktu feed
yang sesuai (
dateModified
) juga harus diperbarui sebelum Google mengambilnya lagi.
Contoh
Google mengambil file berikut pada pukul 11.00 pada 28-12-2018 untuk sebuah restoran yang benar-benar baru:
{
"@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 diberi versi sebagai "2018-12-28T06:30:00-07:00". Karena feed batch memerlukan waktu untuk diproses, feed ini biasanya ditayangkan 2 hari kemudian.
Namun, pada pukul 13.00, sistem partner memiliki pembaruan pada nomor telepon restoran, yang menghasilkan panggilan inkremental berikut, yang diterima Google pada 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
diberikan secara eksplisit, dan lebih besar (lebih baru) daripada
versi sebelumnya (06.30 pada hari yang sama), sehingga entitas restoran kini
memiliki 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 diperbarui dengan stempel waktu baru yang sesuai. Selain itu, perubahan yang sesuai diterapkan ke entitas yang relevan (entitas restoran memiliki nomor telepon yang 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"
...
}
]
}
Hari berikutnya (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 dipertahankan. Namun, entity Menu dan Layanan diperbarui dengan versi baru.
Stempel waktu peta situs
Header respons last-modified
di peta situs tidak memengaruhi
versi entitas. Hal ini memengaruhi kapan feed diambil oleh Google.
Praktik terbaik
- Perbarui header respons hanya jika semua file sudah yang terbaru dan siap diambil.
- Gunakan
update_time
dandelete_time
secara eksplisit dalam inkremental. - Tetapkan
update_time
,delete_time
, dandateModified
ke saat data berubah di pihak Anda.