Toplu feed'lerinizde bir öğenin sürümü, feed'in zarfındaki dateModified
alanı aracılığıyla belirlenir:
{
"@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
alanında listelenen tüm öğeler, zarftakiyle aynı zaman damgasına sahip olur.
Örneğin, iki öğe içeren aşağıdaki feed'iniz olabilir:
{
"@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"
...
}
]
}
Alınan ve işlenen hem menü hem de restoran öğeleri, "2018-12-28T06:30:00:123-07:00" olarak ayrı ayrı sürümlendirilir.
Artımlı güncellemelerle sürüm oluşturma
Envanter güncellemeleri kullanılarak bir öğe gönderilirken sürüm, update_time
alanı (ekle/güncelle çağrısı durumunda) veya delete_time
alanı (silme çağrısı durumunda) aracılığıyla ayarlanır. Bu alanlar isteğe bağlı olduğundan varsayılan zaman damgası, Google'ın aramayı aldığı zamana ayarlanır.
1. Örnek: update_time açıkça ayarlandı
Tamamen yeni bir restoran için 28.12.2018T06:30:10:123-07:00 tarihinde aşağıdaki artımlı çağrının alındığını varsayalım. Veri feed'inin v1 envanter şemasını kullandığı varsayılarak, "http://www.provider.com/somerestaurant" kimlikli öğe için HTTP POST isteği aşağıda verilmiştir:
POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
Aşağıdaki JSON yük gövdesinde update_time
alanı yer alır. "http://www.provider.com/somerestaurant" kimliğine sahip öğe, alındığı zaman (on saniye sonra 6:30:10) değil, 6:30:00 olarak sürümlendirilir:
{
// 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. Örnek: update_time dolaylı olarak ayarlandı
Tamamen yeni bir restoran için 28.12.2018T06:30:10:123-07:00 tarihinde aşağıdaki artımlı çağrının alındığını varsayalım. Feed'in v1 envanter şemasını kullandığı varsayılarak, "http://www.provider.com/somerestaurant" kimlikli öğe için HTTP POST isteği aşağıda verilmiştir:
POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
Aşağıdaki JSON yük gövdesi, update_time
alanını içermez. "http://www.provider.com/somerestaurant" kimlikli öğe, bu öğenin 6:30:10 olarak sürümlendirilmesine neden olur:
{
// 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"
}
}
Toplu ve artımlı sürüm oluşturma
Google'a gönderilen bir öğe yalnızca en son sürüme sahipse işlenir ve yayınlanır. Toplu olarak gönderilen öğelerin işlenmesi genellikle birkaç gün sürerken artımlı API aracılığıyla gönderilen öğelerin hemen işlendiğini unutmayın.
En iyi uygulamalar
update_time
vedateModified
alanlarını, öğenin sistemlerinizde değiştirildiği zamana göre sırasıyla artımlı ve toplu olarak ayarlayın.- Bir toplu feed'de (dosyada) birden fazla üst düzey öğe listeleniyorsa (örneğin, restoranlarınızı hizmetler ve menülerle eşleştiriyorsanız) öğe verileri güncellendikçe zaman damgasını güncelleyin.
- Artımlı çağrılarda
update_time
alanını açıkça ayarlamanızı önemle tavsiye ederiz. - Artımlı bir çağrı yapıldıktan sonra, Google feed'i tekrar getirmeden önce ilgili feed zaman damgasının (
dateModified
) da güncellenmesi gerekir.
Örnek
Google, tamamen yeni bir restoran için 28.12.2018 tarihinde saat 11:00'de aşağıdaki dosyayı getirir:
{
"@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"
...
}
]
}
Bu öğeler başarıyla işlenir ve "2018-12-28T06:30:00-07:00" olarak sürümlendirilir. Toplu feed'lerin işlenmesi zaman aldığından bu feed'ler genellikle 2 gün sonra yayınlanır.
Ancak saat 13:00'te iş ortağının sisteminde restoranın telefon numarası güncellenir. Bu durum, Google'ın 13:05'te (5 saniye sonra) aldığı aşağıdaki artımlı aramaya neden olur:
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
açıkça sağlanmıştır ve önceki sürümden (aynı günün 06:30'u) daha büyüktür (daha yenidir), bu nedenle restoran öğesi artık "2018-12-28T13:00:00-07:00" olarak sürümlendirilmiştir. Ancak menü ve hizmet varlıkları hâlâ "2018-12-28T06:30:00-07:00" olarak sürümlendirilmiştir.
Artımlı bir çağrı yapıldığından toplu feed, yeni ilgili zaman damgasıyla güncellenir. Ayrıca, ilgili değişiklikler ilgili öğelere de uygulanır (restoran öğesinin telefon numarası güncellenir).
{
"@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"
...
}
]
}
Ertesi gün (29.12.2018) 23:00'te feed tekrar getirilir. Restoranın sürümü hâlâ aynı olduğundan (28 Aralık, 13:00) bu öğe kaldırılır ve mevcut sürüm korunur. Ancak Menü ve Hizmet öğeleri yeni bir sürümle güncellenir.
Site haritası zaman damgaları
Site haritasındaki last-modified
yanıt başlığı, öğenin sürümünü etkilemez. Bu, feed'in Google tarafından ne zaman getirildiğini etkiler.
En iyi uygulamalar
- Yanıt üstbilgisini yalnızca tüm dosyalar güncel ve getirilmeye hazır olduğunda güncelleyin.
- Artımlı olarak
update_time
vedelete_time
değerlerini açıkça kullanın. update_time
,delete_time
vedateModified
değerlerini, verilerin sizin tarafınızda değiştiği zamana ayarlayın.