К каждому объекту, отправляемому в Google через каналы или обновления в реальном времени, прикреплена версия. Эта версия поставляется в виде отметки времени. В каналах метка времени может быть указана для каждой сущности с помощью атрибута dateModified
. Если атрибут не включает объекты фида, версия устанавливается на время начала приема фида. В обновлениях в реальном времени batchPush
и batchDelete
соответственно для установки версии используются поля generation_timestamp
и delete_time
. Если поле не включено, версия устанавливается на время получения запроса. См. ожидаемый формат значений времени в схеме реляционной инвентаризации.
Google обрабатывает только объекты (например, ресторан, меню или услугу), версия которых равна последней принятой версии или новее. В противном случае объект не принимается и записывается ошибка устаревшего объекта . Когда сущность обновляется до новой версии, временная метка последнего изменения обновляется до текущего времени ее обновления.
Пример
Предположим, что 16 июня в 01:10 по всемирному координированному времени создается фид, в который включен следующий пример объекта.
{
"@type": "Restaurant",
"@id": "restaurant12345",
"dateModified": "2022-06-16T01:10:00.000Z",
...
}
Фид еще не обработан Google. Позже в тот же день в 2022-06-16T01:22:00.000Z
Google получает batchPush
запрос обновления в реальном времени со следующим объектом.
{
"records": [
{
"data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
"generation_timestamp": "2022-06-16T01:20:00.000Z"
}
]
}
Версия идентификатора объекта ресторана restaurant12345
теперь равна 2022-06-16T01:20:00.000Z
, а последняя измененная временная метка объекта установлена на 2022-06-16T01:22:00.000Z
. Таким образом, время последнего изменения — это время обновления объекта в инвентаре Google, а версия — это generation_timestamp
из запроса на обновление в реальном времени или значение dateModified
из фида.
Прием канала начнется 16 июня в 02:00 UTC. В этой ситуации объект, полученный в канале с версией 2022-06-16T01:10:00.000Z
считается устаревшим и не принимается. Поэтому Google продолжает обслуживать объект с версией 2022-06-16T01:20:00.000Z
по запросу на обновление в реальном времени .
Лучшие практики:
- Внедрите временную метку в каналы для каждого объекта.
- Примените изменения обновления в реальном времени к следующему фиду и установите временную метку dateModified в объектах фида на текущее время, когда вы создали фид.