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

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 ve dateModified 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 ve delete_time değerlerini açıkça kullanın.
  • update_time, delete_time ve dateModified değerlerini, verilerin sizin tarafınızda değiştiği zamana ayarlayın.