Microsoft graph api MS Graph是否使用ETag标头处理缓存?

Microsoft graph api MS Graph是否使用ETag标头处理缓存?,microsoft-graph-api,Microsoft Graph Api,我正试图用ms graph中给定的ETag缓存检索到的照片。这里有一个命令: http 'https://graph.microsoft.com/v1.0/users/[user-mail]/photo/$value' Authorization:"Bearer [token]" If-None-Match:[prev_ETag] -v 不幸的是,我看到的不是304未修改而是200正常的二进制数据响应。有没有办法使用ETag令牌来防止重新蚀刻已下载的照片?我的目标是减少ms图形的负载。有关于如

我正试图用ms graph中给定的
ETag
缓存检索到的照片。这里有一个命令:

http 'https://graph.microsoft.com/v1.0/users/[user-mail]/photo/$value' Authorization:"Bearer [token]" If-None-Match:[prev_ETag] -v

不幸的是,我看到的不是
304未修改
而是
200正常
的二进制数据响应。有没有办法使用ETag令牌来防止重新蚀刻已下载的照片?我的目标是减少ms图形的负载。有关于如何从API缓存数据的microsoft指南吗?我尝试使用
HEAD
http请求,但不受支持。

是的,您可以基于ETag缓存照片。当你得到照片时,你应该得到一个
etag
响应标题。您可以通过获取照片的元数据(而不是照片本身)来检查照片是否已更改:

这将返回有关当前照片的一些信息,包括
@odata.mediaEtag
属性中的ETag

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('e6c10dc8-5218-46f7-a0c1-59026b45b0fe')/photo/$entity",
  "@odata.mediaContentType": "image/jpeg",
  "@odata.mediaEtag": "\"6A0C23F3\"",
  "id": "240X240",
  "height": 240,
  "width": 240
}

这似乎是一个变通解决方案,但不是标准解决方案。我注意到,如果在浏览器中使用F12开发工具调试网络流量,它可能会显示200和缓存的有效负载,即使服务器返回304而没有返回主体。在试图找出ETag不起作用的原因之前,我被发现了,但结果是它起作用了,而浏览器正在隐藏它。
{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('e6c10dc8-5218-46f7-a0c1-59026b45b0fe')/photo/$entity",
  "@odata.mediaContentType": "image/jpeg",
  "@odata.mediaEtag": "\"6A0C23F3\"",
  "id": "240X240",
  "height": 240,
  "width": 240
}