En tus feeds por lotes, la versión de una entidad se determina mediante la
Campo dateModified
en el sobre del feed:
{
"@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 */
]
}
Todas las entidades enumeradas en el campo dataFeedElement
tendrán la misma marca de tiempo.
como se indica en el sobre.
Por ejemplo, podrías tener el siguiente feed con dos entidades:
{
"@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"
...
}
]
}
Tanto las entidades del menú como las del restaurante, una vez recibidas y procesadas, se con una versión individual como “2018-12-28T06:30:00:123-07:00”.
Control de versiones con actualizaciones incrementales
Cuando se envía una entidad con actualizaciones de inventario, la versión se establece a través de
el campo update_time
(en el caso de una llamada de adición o actualización) o el delete_time
(en el caso de una llamada de eliminación). Como estos campos son opcionales, la
La marca de tiempo predeterminada es el momento en que Google recibió la llamada.
Ejemplo 1: update_time establecido explícitamente
Supongamos que se recibe la siguiente llamada incremental el 2018-12-28T06:30:10:123-07:00. por un restaurante completamente nuevo. Esta es la solicitud HTTP POST para esa entidad con el ID “http://www.provider.com/somerestaurant”, suponiendo que el feed de datos usa esquema del inventario v1:
POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
A continuación, el cuerpo de la carga útil JSON contiene el campo update_time
. La entidad con
ID “http://www.provider.com/somerestaurant” da como resultado que esta entidad
versión como 6:30:00 y no cuando se recibió (diez segundos después en
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&q
uot;
},
"update_time":"2018-12-28T06:30:00:123-07:00"
}
Ejemplo 2: update_time establecido implícitamente
Supongamos que se recibe la siguiente llamada incremental el 2018-12-28T06:30:10:123-07:00. por un restaurante completamente nuevo. Esta es la solicitud HTTP POST para esa entidad con el ID “http://www.provider.com/somerestaurant”, suponiendo que el feed usa la v1 esquema de inventario:
POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
A continuación, el cuerpo de la carga útil JSON no contiene el campo update_time
. El
Entidad con el ID “http://www.provider.com/somerestaurant” por lo que da como resultado
esta entidad tiene la versión 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"
}
}
Control de versiones entre incrementales y por lotes
Una entidad que se envía a Google se procesa y entrega solo si tiene la última versión. Ten en cuenta que las entidades enviadas por lotes suelen tardar algunos días en recibirse. procesadas, mientras que las entidades enviadas a través de la API incremental se procesan de inmediato.
Prácticas recomendadas
- Configura los campos
update_time
ydateModified
en incremental y por lotes. respectivamente, según el momento en que se modificó la entidad en tus sistemas. - Si un feed por lotes (archivo) muestra más de una entidad de nivel superior (por ejemplo, tú vincular restaurantes con servicios y menús) y, a continuación, actualizar la marca de tiempo como se actualizan los datos de una entidad.
- En las llamadas incrementales, te recomendamos que establezcas de forma explícita
update_time
. - Una vez que se hace una llamada incremental, es fundamental que el feed correspondiente
La marca de tiempo (
dateModified
) también se actualiza antes de que Google la recupere.
Ejemplo
Google recupera el siguiente archivo a las 11 a.m. del 28/12/2018 para obtener un archivo restaurante:
{
"@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/newrestaur
ant/menu/1"
...
}
{
"@type": "Service",
"@id": "http://www.provider.com/newrestaurant/service/1"
...
}
]
}
Estas entidades se procesan correctamente y se controlan mediante las versiones "2018-12-28T06:30:00-07:00". Debido a que los feeds por lotes tardan en procesarse, estos normalmente se publican 2 días después.
Sin embargo, a la 1 p.m., el sistema del socio tiene una actualización en el teléfono del restaurante. número, lo que da como resultado la siguiente llamada incremental, que Google recibe a las 13:05 (5 segundos después):
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": "FOODORDERI
NG"
},
"update_time":"2018-12-28T13:00:00-07:00"
}
El update_time
se proporciona de manera explícita y es mayor (más reciente) que el
versión anterior (6:30 a.m. del mismo día), por lo que la entidad restaurante ahora es
con la versión “2018-12-28T13:00:00-07:00”. Sin embargo, el menú y las entidades de servicio
todavía tienen la versión “2018-12-28T06:30:00-07:00”.
Se realizó una llamada incremental, de modo que el feed por lotes se actualiza con el nuevo y la marca de tiempo correspondiente. Además, los cambios correspondientes se aplican al las entidades relevantes (la entidad del restaurante tiene su número de teléfono actualizado).
{
"@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/newrestaur
ant/menu/1"
...
}
{
"@type": "Service",
"@id": "http://www.provider.com/newrestaurant/service/1"
...
}
]
}
Al día siguiente (29 de diciembre de 2018) a las 11 p.m., se vuelve a recuperar el feed. El restaurante Esta entidad sigue teniendo la misma versión (1 p.m. del 28 de diciembre), por lo que se descartará. y se conserva la versión actual. Sin embargo, las entidades Menu y Service son actualizado con una versión nueva.
Marcas de tiempo del mapa del sitio
El encabezado de respuesta last-modified
del mapa del sitio no afecta la
más reciente de una entidad. Afecta cuándo Google recupera el feed.
Prácticas recomendadas
- Actualiza el encabezado de respuesta solo cuando todos los archivos estén actualizados y listos para que se puede recuperar.
- Usa
update_time
ydelete_time
de forma explícita en incrementos. - Configura
update_time
,delete_time
ydateModified
para cuando cambien los datos por ti.