نسخه 1 در فیدهای دسته ای

در فیدهای دسته ای شما، نسخه یک موجودیت از طریق فیلد dateModified در پاکت فید تعیین می شود:

{
  "@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 دارای همان مهر زمانی هستند که در پاکت فهرست شده است.

به عنوان مثال، می توانید فید زیر را با دو نهاد داشته باشید:

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

هر دو منو و رستوران، پس از دریافت و پردازش، به صورت جداگانه به عنوان "2018-12-28T06:30:00:123-07:00" نسخه می شوند.

نسخه سازی با به روز رسانی افزایشی

هنگام ارسال یک موجودی با استفاده از به‌روزرسانی‌های موجودی ، نسخه از طریق قسمت update_time (در مورد تماس افزودن/به‌روزرسانی) یا قسمت delete_time (در مورد تماس حذف) تنظیم می‌شود. از آنجایی که این فیلدها اختیاری هستند، مهر زمانی پیش‌فرض روی زمانی تنظیم می‌شود که Google تماس را دریافت کرد.

مثال 1: update_time به صراحت تنظیم شده است

فرض کنید تماس افزایشی زیر در 2018-12-28T06:30:10:123-07:00 برای یک رستوران کاملاً جدید دریافت شده است. در اینجا درخواست HTTP POST برای آن موجودیت با شناسه "http://www.provider.com/somerestaurant" است، با این فرض که فید داده از طرح موجودی v1 استفاده می کند:

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

در زیر، بدنه بار JSON حاوی فیلد update_time است. موجودیت با شناسه "http://www.provider.com/somerestaurant" باعث می شود که این موجودیت به عنوان 6:30:00 نسخه شود و نه زمانی که دریافت شد (ده ثانیه بعد در ساعت 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"
}

مثال 2: update_time به طور ضمنی تنظیم شده است

فرض کنید تماس افزایشی زیر در 2018-12-28T06:30:10:123-07:00 برای یک رستوران کاملاً جدید دریافت شده است. در اینجا درخواست HTTP POST برای آن موجودیت با شناسه "http://www.provider.com/somerestaurant" است، با این فرض که فید از طرح موجودی v1 استفاده می کند:

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

در زیر، بدنه بار JSON حاوی فیلد update_time نیست . بنابراین موجودیت با شناسه "http://www.provider.com/somerestaurant" باعث می شود که این موجودیت به صورت 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"
  }
}

نسخه سازی بین دسته ای و افزایشی

نهاد ارسال شده به Google تنها در صورتی پردازش و ارائه می شود که آخرین نسخه را داشته باشد. توجه داشته باشید که نهادهای ارسال شده از طریق دسته ای معمولاً چند روز طول می کشد تا پردازش شوند، در حالی که موجودیت هایی که از طریق API افزایشی ارسال می شوند بلافاصله پردازش می شوند.

بهترین شیوه ها

  • فیلدهای update_time و dateModified را به ترتیب به صورت افزایشی و دسته ای با توجه به زمانی که موجودیت در سیستم شما تغییر کرده است، تنظیم کنید.
  • اگر فید دسته‌ای (فایل) بیش از یک نهاد سطح بالا را فهرست می‌کند (برای مثال، رستوران‌های خود را با خدمات و منوها جفت می‌کنید)، سپس با به‌روزرسانی داده‌های یک موجودیت، مهر زمانی را به‌روزرسانی کنید.
  • در تماس‌های افزایشی، اکیداً توصیه می‌کنیم که قسمت update_time را صریحاً تنظیم کنید.
  • ضروری است که به محض برقراری تماس افزایشی، قبل از اینکه Google دوباره آن را واکشی کند، مُهر زمانی فید مربوطه ( dateModified ) نیز به روز شود.

مثال

Google فایل زیر را در ساعت 11 صبح در 28-12-2018 برای یک رستوران کاملاً جدید واکشی می‌کند:

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

این نهادها با موفقیت پردازش می شوند و به عنوان "2018-12-28T06:30:00-07:00" نسخه می شوند. از آنجایی که پردازش فیدهای دسته ای زمان می برد، معمولاً 2 روز بعد ارائه می شوند.

با این حال، در ساعت 1 بعد از ظهر، سیستم شریک به‌روزرسانی شماره تلفن رستوران را دارد که منجر به تماس تدریجی زیر می‌شود که Google در ساعت 13:05 (5 ثانیه بعد) دریافت می‌کند:

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 به صراحت ارائه شده است، و بزرگتر (جدیدتر) از نسخه قبلی (6:30 صبح همان روز) است، بنابراین نهاد رستوران اکنون به عنوان "2018-12-28T13:00:00-07:00" نسخه می شود. ". با این حال، منو و نهادهای خدمات همچنان به عنوان "2018-12-28T06:30:00-07:00" نسخه می شوند.

یک تماس افزایشی وجود داشت، بنابراین فید دسته‌ای با مهر زمانی مربوطه جدید به‌روزرسانی می‌شود. همچنین تغییرات مربوطه در مورد نهادهای مربوطه اعمال می شود (شخصیت رستوران شماره تلفن خود را به روز می کند).

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

روز بعد (29-12-2018) در ساعت 11 شب، فید دوباره دریافت می‌شود. رستوران هنوز همان نسخه را دارد (۱ بعدازظهر ۲۸ دسامبر)، بنابراین این موجودیت حذف می‌شود و نسخه فعلی حفظ می‌شود. با این حال، موجودیت های منو و سرویس با یک نسخه جدید به روز می شوند.

مُهرهای نقشه سایت

هدر پاسخ last-modified در نقشه سایت بر نسخه یک موجودیت تأثیر نمی گذارد. بر زمانی که فید توسط Google واکشی می شود تأثیر می گذارد.

بهترین شیوه ها

  • هدر پاسخ را فقط زمانی به‌روزرسانی کنید که همه فایل‌ها به‌روز و آماده واکشی باشند.
  • به صراحت از update_time و delete_time به صورت افزایشی استفاده کنید.
  • update_time ، delete_time و dateModified را برای زمانی تنظیم کنید که داده ها در انتهای شما تغییر کنند.