2016-08-10 8 views
3

Я использую javascript gmail api для извлечения потоков электронной почты с помощью threadId. Я использую следующий код:Отключить кеширование запросов api gmail

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

request.execute(function(response) { 

    var messages = response.messages; 

}); 

Впервые за конкретный ThreadId он работает нормально. И для дальнейших запросов возвращает одинаковое количество сообщений, даже если поток имеет больше писем. Но ответ дает правильное количество сообщений электронной почты, если я очищаю кеш браузера с URL-адресом gapi из инструментов разработчика Chrome - сетевой вариант.

Пример:

-> Выполненный запрос с '123abc', в настоящее время поток имеет 3 писем ThreadId в нем. Ответ на запрос правильный с длиной 3 для response.messages.

-> Затем я отправил еще одно электронное письмо в качестве ответа на этот поток, а затем снова выполнил тот же запрос. Но ответ по-прежнему остается старым с длиной 3 для response.messages.

-> Пробовал работать с тем же запросом много раз, но получал тот же ответ.

-> Затем очистил кеш браузера для этого URL-адреса и запросил еще раз, теперь ответ правильный с длиной 4 для response.messages.

попытался добавить следующий мета-тег на странице 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

Наконец получил решение, добавив случайное число поле «metadataHeaders» в запросе Gapi:

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

Но я думаю, что его можно добавить несколько значений для метаданныхHeaders filed –

+0

Это правда. Если вы добавите заголовки, которые вы хотите + Math.random(), он будет уникальным. Умная. – Tholle