Toplu feed'lerde v1 sürüm oluşturma

Toplu feed'lerinizde bir varlığın 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 varlıklar, zarfta listelenen zaman damgasına sahip olur.

Örneğin, iki varlık 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"
      ...
    }
  ]
}

Hem menü hem de restoran varlıkları, alınıp işlendikten sonra tek tek "2018-12-28T06:30:00:123-07:00" şeklinde sürümlenir.

Artımlı güncellemelerle sürüm oluşturma

Envanter güncellemeleri kullanarak bir varlık gönderirken, sürüm update_time alanı (ekleme/güncelleme çağrısında) veya delete_time alanı (silme çağrısında) aracılığıyla ayarlanır. Bu alanlar isteğe bağlı olduğundan varsayılan zaman damgası, Google'ın aramayı aldığı zaman olarak ayarlanır.

1. Örnek: update_time açıkça ayarlandı

Tamamen yeni bir restoran için 2018-12-28T06:30:10:123-07:00'da aşağıdaki ek aramanın alındığını varsayalım. Veri feed'inin v1 envanter şemasını kullandığı varsayılarak "http://www.provider.com/someRestaurant" kimliğine sahip varlık için HTTP POST isteğini burada görebilirsiniz:

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çerir. "http://www.provider.com/someRestaurant" kimliğine sahip varlık, bu varlığın alındığı zaman değil (on saniye sonra 6:30:10'da) 6:30:00 sürümüne dönüştürülmesine neden oluyor:

{
// 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 gizli olarak ayarlandı

Tamamen yeni bir restoran için 2018-12-28T06:30:10:123-07:00'da aşağıdaki ek aramanın alındığını varsayalım. Feed'in v1 envanter şemasını kullandığı varsayılarak "http://www.provider.com/someRestaurant" kimliğine sahip varlık için HTTP POST isteğini burada görebilirsiniz:

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. Bu nedenle "http://www.provider.com/someRestaurant" kimliğine sahip varlık, bu varlığın 6:30:10 sürümüne sahip olmasıyla sonuçlanır:

{
// 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 varlık yalnızca en son sürüme sahip olduğunda işlenir ve sunulur. Toplu API ile gönderilen varlıkların işlenmesinin genellikle birkaç gün sürdüğünü, artımlı API ile gönderilen varlıkların ise hemen işlendiğini unutmayın.

En iyi uygulamalar

  • update_time ve dateModified alanlarını, varlığın sistemlerinizde değiştirildiği zamana göre sırasıyla artımlı ve toplu olarak ayarlayın.
  • Bir toplu feed'de (dosya) birden fazla üst düzey varlık listeleniyorsa (örneğin, restoranlarınızı hizmetler ve menülerle eşliyorsanız) zaman damgasını, bir varlığın verileri güncellendikçe 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 tarafından tekrar getirilmeden önce ilgili feed zaman damgasının (dateModified) da güncellenmesi zorunludur.

Örnek

Google, tamamen yeni bir restoran için 28.12.2018 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 varlıklar başarıyla işlenir ve "2018-12-28T06:30:00-07:00" şeklinde sürüm alır. Toplu feed'lerin işlenmesi zaman aldığı için bu feed'ler genellikle 2 gün sonra sunulur.

Ancak saat 13:00'te iş ortağının sisteminde, restoranın telefon numarası güncellenir. Bu güncellemeyle birlikte aşağıdaki ek arama sağlanır ve Google 13:05'te (5 saniye sonra) alır:

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ğlanır ve önceki sürümden (daha yeni) daha büyüktür (aynı gün içinde saat 06:30'da). Bu nedenle restoran işletmesinin sürümü "2018-12-28T13:00:00-07:00" olarak verilmiştir. Ancak menünün ve hizmet varlıklarının sürümü hâlâ "2018-12-28T06:30:00-07:00" şeklindedir.

Çağrı sayısı arttığı için toplu feed, karşılık gelen yeni zaman damgasıyla güncellenir. Ayrıca, ilgili değişiklikler ilgili varlıklar için de uygulanır (restoranın telefon numarası güncellenmiştir).

{
  "@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) saat 23:00'te feed tekrar getirilir. Restoranda hâlâ aynı sürüm (28 Aralık, 13:00, 13:00) olduğu için bu varlık atlanır ve mevcut sürüm saklanır. Ancak Menü ve Hizmet varlıkları yeni bir sürümle güncellenir.

Site haritası zaman damgaları

Site haritasındaki last-modified yanıt başlığı, bir varlığın sürümünü etkilemez. Feed'in Google tarafından ne zaman getirileceğini etkiler.

En iyi uygulamalar

  • Yanıt başlığını yalnızca tüm dosyalar güncel ve getirilmeye hazır olduğunda güncelleyin.
  • update_time ve delete_time öğelerini açıkça artımlı şekilde kullanın.
  • update_time, delete_time ve dateModified için veri değişeceği zamanı ayarlayın.