2016-08-10 4 views
3

javascript gmail api를 사용하여 threadId를 사용하여 이메일 스레드를 가져옵니다. 나는 다음과 같은 코드를 사용하고 있습니다 : 특정의 처음gmail api 요청 캐싱 사용 안함

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

request.execute(function(response) { 

    var messages = response.messages; 

}); 

은 잘 작동하고 threadId. 그리고 쓰레드가 더 많은 이메일을 가지고있다하더라도 더 많은 요청을하기 위해 같은 수의 메시지를 반환한다. 그러나 Chrome 개발자 도구 - 네트워크 옵션에서 gapi URL의 브라우저 캐시를 지우는 경우 정확한 응답으로 이메일이 전송됩니다.

예 :

-> 그 안에 threadId '123ABC'현재 스레드가 3 이메일로 요청을 실행 된. 요청에 대한 응답은 올바른 길이가 3이고 response.messages입니다.

-> 그런 다음이 스레드에 대한 답장으로 이메일을 한 번 더 보낸 다음 동일한 요청을 다시 실행했습니다. 그러나 응답은 여전히 ​​길이가 3이고 길이가 response.messages 인 구형입니다.

-> 동일한 요청을 여러 번 실행했지만 동일한 응답을 얻으려고 시도했습니다.

->이 url에 대한 브라우저 캐시를 지우고 다시 요청하면 response.messages의 길이가 4 인 응답이 올바른 것입니다.

는 HTML 페이지에 메타 태그 다음에 추가하려고했지만 작동하지 않았다 :

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

페이지의 URL과 요청에 임의의 번호를 추가 시도했지만 작동하지 않았다.

는 GAPI 스크립트 링크 임의의 숫자를 추가했지만, <script src="https://apis.google.com/js/client.js?onload=AuthIt&cacheBurster=123123123123"></script>

GAPI 요청 캐싱 또는이 문제를 해결하기 위해 다른 방법을 비활성화 할 수있는 코드가 작동하지 않았다?

답변

5

마지막으로 GAPI 요청에 'metadataHeaders'필드에 임의의 숫자를 추가하여 솔루션을 가지고 :

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

이 캐싱 문제와 함께 작동합니다,하지만 당신은 어디'metadata'을 형식을 사용하는 경우 [metadataHeaders] (https://developers.google.com/gmail/api/v1/reference/users/threads/get#parameters)의 문서를 보면 응답에 헤더가 표시되지 않습니다. – Tholle

+0

하지만 metadataHeaders에 여러 값을 추가하는 것이 가능하다고 생각합니다. –

+0

사실입니다. 원하는 헤더 + Math.random()을 추가하면 고유합니다. 똑똑한. – Tholle