W plikach danych wsadowych wersja elementu jest określana przez tag
Pole dateModified
w kopercie pliku danych:
{
"@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 */
]
}
Wszystkie elementy wymienione w polu dataFeedElement
będą miały tę samą sygnaturę czasową,
zgodnie z opisem w kopercie.
Możesz np. mieć taki plik danych z 2 elementami:
{
"@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"
...
}
]
}
Zarówno menu, jak i restauracje po otrzymaniu i przetworzeniu są pojedynczo w wersji „2018-12-28T06:30:00:123-07:00”.
Obsługa wersji z aktualizacjami przyrostowymi
Gdy element jest wysyłany za pomocą aktualizacji zasobów reklamowych, wersja jest ustawiana przez
polu update_time
(w przypadku wywołania dodawania/aktualizacji) lub delete_time
(w przypadku usunięcia). Pola te są opcjonalne, więc funkcja
domyślna sygnatura czasowa jest ustawiona na moment odebrania połączenia przez Google.
Przykład 1: jawnie ustawiona wartość update_time
Załóżmy, że o godz. 2018-12-28T06:30:10:123-07:00 odebrano następujące dodatkowe połączenie żeby stworzyć zupełnie nową restaurację. Oto żądanie HTTP POST dla tej encji z identyfikatorem „http://www.dostawca.pl/restauracja”, zakładając, że plik danych używa Schemat zasobów reklamowych w wersji 1:
POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
Poniżej treść ładunku JSON zawiera pole update_time
. Encja z
Identyfikator „http://www.dostawca.com/restauracja” sprawia, że ta encja jest
ma wersję 6:30:00, a nie w momencie jej odebrania (dziesięć sekund później o
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"
}
Przykład 2: ustawienie niejawne w czasie aktualizacji
Załóżmy, że o godz. 2018-12-28T06:30:10:123-07:00 odebrano następujące dodatkowe połączenie żeby stworzyć zupełnie nową restaurację. Oto żądanie HTTP POST dla tej encji z identyfikatorem „http://www.dostawca.com/restauracja”, zakładając, że kanał używa wersji v1 schemat zasobów reklamowych:
POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
Poniżej treść ładunku JSON nie zawiera pola update_time
.
element o identyfikatorze „http://www.dostawca.com/restauracja” daje w efekcie
ten element ma wersję 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"
}
}
Obsługa wersji wsadowego i przyrostowego
Element wysłany do Google jest przetwarzany i wyświetlany tylko wtedy, gdy ma najnowszą wersję wersji. Pamiętaj, że uzyskanie elementów wysyłanych zbiorczo zajmuje zwykle kilka dni natomiast jednostki wysłane za pomocą przyrostowego interfejsu API są przetwarzane natychmiast.
Sprawdzone metody
- Ustaw pola
update_time
idateModified
stopniowo i zbiorczo, zgodnie z datą modyfikacji elementu w Twoich systemach. - Jeśli w pliku wsadowym (plik) znajduje się więcej niż jeden element najwyższego poziomu (na przykład dodaj restauracje do usług i menu), a następnie zaktualizuj sygnaturę czasową jako dane encji są aktualizowane.
- W przypadku wywołań przyrostowych zdecydowanie zalecamy
update_time
. - Po wywołaniu przyrostowym należy koniecznie dodać odpowiedni plik danych
sygnatura czasowa (
dateModified
) również jest aktualizowana, zanim Google pobierze ją ponownie.
Przykład
Google pobierze ten plik o godz. 11:00 28.12.2018, aby pobrać zupełnie nowy plik. restauracja:
{
"@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"
...
}
]
}
Te encje zostały przetworzone poprawnie i mają wersję jako "2018-12-28T06:30:00-07:00". Przetwarzanie zbiorczych plików danych wymaga czasu, więc są zwykle wyświetlane 2 dni później.
O 13:00 system partnera ma jednak aktualizację telefonu restauracji co prowadzi do kolejnego przyrostowego połączenia, które Google otrzymuje o 13:05 (5 sekund później):
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"
}
Parametr update_time
jest podany jawnie i jest większy (nowszy) niż
poprzednia wersja (6:30 tego samego dnia), więc element restauracji to teraz
ma wersję „2018-12-28T13:00:00-07:00”. Jednak menu i encje usługi
nadal mają wersję „2018-12-28T06:30:00-07:00”.
Nastąpiło wywołanie przyrostowe, więc plik danych wsadowy jest aktualizowany o nowy odpowiednią sygnaturę czasową. Odpowiednie zmiany są też stosowane do odpowiednich podmiotów (numer telefonu podmiotu restauracji ma zaktualizowany numer telefonu).
{
"@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"
...
}
]
}
Następnego dnia (29.12.2018) o 23:00 plik danych zostanie ponownie pobrany. Restauracja nadal ma tę samą wersję (13:00 28 grudnia), więc ten element zostanie usunięty i zachowamy bieżącą wersję. Elementy menu i usługi są jednak została zaktualizowana o nową wersję.
Sygnatury czasowe mapy witryny
Nagłówek odpowiedzi last-modified
w mapie witryny nie ma wpływu na
wersji jednostki. Ma to wpływ na to, kiedy Google pobierze kanał.
Sprawdzone metody
- Aktualizuj nagłówek odpowiedzi tylko wtedy, gdy wszystkie pliki są aktualne i gotowe do do pobrania.
- Wyraźnie używaj atrybutów
update_time
idelete_time
w sposób przyrostowy. - Ustaw
update_time
,delete_time
idateModified
na okres zmiany danych po Twojej stronie.