实体版本控制

<ph type="x-smartling-placeholder">

无论是通过 Feed 还是实时更新发送到 Google 的每个实体 附加了某个版本。此版本采用时间戳的形式。在 Feed,可以使用 dateModified 为每个实体提供时间戳 属性。如果 Feed 实体中未包含该属性,则版本为 设置为 Feed 提取的开始时间。实时更新batchPushbatchDelete 字段,分别为 generation_timestampdelete_time 用于设置版本。如果未添加该字段,则版本设置为 收到请求的时间。请参阅 time [时间] 的预期格式 价值 关系型广告资源架构中的技术

Google 只会处理各种实体(例如餐馆、菜单或服务) 且版本不低于上次接受的版本。否则, 实体不会被提取,并且会记录 Stale Entity 错误。当 使用新版本更新实体时,上次修改时间戳会更新为 当前更新时间。

示例

假设在世界协调时间 (UTC) 6 月 16 日 01:10 生成了一个 Feed,如以下示例所示 实体。

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "dateModified": "2022-06-16T01:10:00.000Z",
  ...
}

Google 尚未提取此 Feed。当天晚些时候 2022-06-16T01:22:00.000Z,Google 会收到 实时更新 batchPush 请求,其中包含以下代码 实体。

{
  "records": [
    {
      "data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
      "generation_timestamp": "2022-06-16T01:20:00.000Z"
    }
  ]
}

餐馆实体 ID restaurant12345 的版本现为 2022-06-16T01:20:00.000Z,并设置实体的上次修改时间戳 发送至 2022-06-16T01:22:00.000Z。总的来说,上次修改时间是指 该实体已在 Google 广告资源中更新,且版本为 generation_timestamp 值,或 Feed 中的“dateModified”值。

然后,从世界协调时间 (UTC) 6 月 16 日 02:00 开始提取 Feed。在这种情况下 在版本为 2022-06-16T01:10:00.000Z 的 Feed 中收到的实体是 视为已过时,不会被注入。因此,Google 会继续为 版本为 2022-06-16T01:20:00.000Z 的实体,位于 实时更新请求。

最佳做法:

  • 在 Feed 中为每个实体实现时间戳。
  • 实时更新更改应用到下一个 Feed,并 设这个 从 Feed 实体中的 dateModified 时间戳改为检索到当前时间时 创建了 Feed。