禁用 Gmail API 请求缓存

3
我正在使用JavaScript Gmail API来获取邮件线程,使用的是threadId。 我正在使用以下代码:
var request = gapi.client.gmail.users.threads.get({
  'userId': 'me',
  'id': '123abc'
});

request.execute(function(response) {

    var messages = response.messages;

});

针对一个特定的线程Id,第一次请求返回了正确的结果。但是在后续请求中,即使该线程有更多的邮件,也仅返回相同数量的邮件。 然而,如果我在Chrome开发人员工具-网络选项中清除gapi url的浏览器缓存,则响应会给出正确的电子邮件数量。
例如: -> 使用线程Id“123abc”执行请求,目前此线程包含3封电子邮件。请求的响应是正确的,response.messages的长度为3。 -> 然后,我向此线程发送了一封电子邮件作为回复,然后再次执行相同的请求。但是响应仍然是旧的,response.messages的长度为3。 -> 尝试多次运行相同的请求,但得到相同的响应。 -> 然后清除了这个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请求缓存的代码或其他方法来解决此问题?

1个回答

5

通过在gapi请求的'metadataHeaders'字段中添加一个随机数,最终获得了解决方案:

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

这将解决您的缓存问题,但是如果您使用metadata格式,根据metadataHeaders文档,您将不会在响应中获得任何标头。 - Tholle
但我认为可以为metadataHeaders字段添加多个值。 - Arun D
没错。如果你加上你想要的头部 + Math.random(),它就会是唯一的。聪明。 - Tholle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接