无论是通过 Feed 还是实时更新发送到 Google 的每个实体
附加了某个版本。此版本采用时间戳的形式。在
Feed,可以使用 dateModified
为每个实体提供时间戳
属性。如果 Feed 实体中未包含该属性,则版本为
设置为 Feed 提取的开始时间。实时更新batchPush
和
batchDelete
字段,分别为 generation_timestamp
和 delete_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。