2016-08-10 4 views
3

Ich benutze JavaScript Gmail API, um E-Mail-Threads mit threadId abrufen. Ich verwende den folgenden Code ein:Deaktivieren Sie Google Mail API-Anfrage Caching

var request = gapi.client.gmail.users.threads.get({ 
    'userId': 'me', 
    'id': '123abc' 
}); 

request.execute(function(response) { 

    var messages = response.messages; 

}); 

Zum ersten Mal für einen bestimmten Thread es funktioniert gut. Und für weitere Anfragen gibt es die gleiche Anzahl von Nachrichten, auch wenn der Thread mehr E-Mails hat. Aber die Antwort gibt die richtige Anzahl von E-Mails, wenn ich den Browser-Cache der Gapi-URL aus der Chrome-Entwickler-Tools - Netzwerk-Option löschen.

Beispiel:

-> die Anforderung mit einem '123abc' ThreadID Ausgeführte, derzeit der Faden 3 E-Mail darin. Die Antwort für die Anforderung ist korrekt mit der Länge 3 für response.messages.

-> Dann schickte ich eine weitere E-Mail als Antwort auf diesen Thread, dann die gleiche Anfrage erneut ausgeführt. Aber die Antwort ist immer noch die alte mit der Länge 3 für response.messages.

-> versucht, die gleiche Anfrage oft, aber immer die gleiche Antwort.

-> Dann löschte der Browser-Cache für diese URL und erneut angefordert, jetzt ist die Antwort korrekt mit der Länge 4 für response.messages.

Versuchte in der HTML-Seite folgende Meta-Tag hinzufügen, aber hat nicht funktioniert:

<meta http-equiv='cache-control' content='no-cache'> 
<meta http-equiv='expires' content='0'> 
<meta http-equiv='pragma' content='no-cache'> 

Versucht eine Zufallszahl mit der Seiten-URL und der Anforderung hinzufügen, aber hat nicht funktioniert.

Zufallszahl mit gapi Skript Link Versuchte hinzufügen, aber nicht <script src="https://apis.google.com/js/client.js?onload=AuthIt&cacheBurster=123123123123"></script>

jeder Code gapi Anfrage Caching oder eine andere Methode zu deaktivieren, um dieses Problem zu lösen, ist es nicht funktioniert?

Antwort

5

bekamen schließlich die Lösung durch eine Zufallszahl Zugabe zu ‚metadataHeaders‘ Feld der gapi Anfrage:

var request = gapi.client.gmail.users.threads.get({ 
    'userId': 'me', 
    'id': '123abc', 
    'metadataHeaders': Math.random() 
}); 
+0

Dies wird mit dem Caching-Problem umgehen, aber wenn Sie, wo das Format 'metadata' zu verwenden, Sie In der Antwort werden keine Header angezeigt. Dies geht aus der Dokumentation von [metadataHeaders] (https://developers.google.com/gmail/api/v1/reference/users/threads/get#parameters) hervor. – Tholle

+0

Aber ich denke, es ist möglich, mehrere Werte für die metadataHeaders-Datei hinzuzufügen –

+0

Das stimmt. Wenn Sie die gewünschten Header + Math.random() hinzufügen, wird es eindeutig sein. Clever. – Tholle

Verwandte Themen