Caching 如何强制Windows Azure存储提供的可缓存资源的特定HTTP头?
在这份文件中,谷歌表示 必须指定过期或缓存控制中的一个 所有可缓存数据的最大年龄,以及上次修改的或ETag中的一个 资源。指定过期和缓存控制是多余的: 最大年龄,或指定上次修改和ETag 我正在使用Microsoft.WindowsAzure.StorageClient中的类将图像上载到blob容器,实际上,这与开源项目中的代码相同 最后修改的图像和ETag一起提供:Caching 如何强制Windows Azure存储提供的可缓存资源的特定HTTP头?,caching,azure,http-headers,azure-storage,azure-storage-blobs,Caching,Azure,Http Headers,Azure Storage,Azure Storage Blobs,在这份文件中,谷歌表示 必须指定过期或缓存控制中的一个 所有可缓存数据的最大年龄,以及上次修改的或ETag中的一个 资源。指定过期和缓存控制是多余的: 最大年龄,或指定上次修改和ETag 我正在使用Microsoft.WindowsAzure.StorageClient中的类将图像上载到blob容器,实际上,这与开源项目中的代码相同 最后修改的图像和ETag一起提供: ETag: 0x8CFED5D3384112F Last-Modified: Tue, 12 Mar 2013 17:21:43
ETag: 0x8CFED5D3384112F
Last-Modified: Tue, 12 Mar 2013 17:21:43 GMT
因此,下一个浏览器请求将发送HTTP头:
If-Modified-Since: Tue, 12 Mar 2013 17:21:43 GMT
If-None-Match: 0x8CFED5D3384112F
我如何才能强制Azure Storage仅使用这两个指令中的一个来消除这种冗余?就个人而言,我不会太担心两个标记都被发送回去,因为这实际上是Microsoft推荐的 13.3.4何时使用实体标签和上次修改日期的规则
…
HTTP/1.1源服务器:
…
... HTTP/1.1源服务器的首选行为是发送强实体标记和上次修改的值。 HTTP 1.1客户端必须在任何缓存条件请求中使用实体标记,如果同时存在实体标记和上次修改的,则应同时使用这两种标记
我希望这能澄清为什么这两个标签都是从Azure存储服务器发回的。简单的回答是你不能 在考虑这一点时,重要的是要记住,当您访问blob存储时,您并没有访问web服务器上的文件,而是使用了一个rest API来返回文件 微软没有办法删除他们认为对存储API至关重要的头文件
如果您担心过多的标题,响应还包括几个x-ms-。。。用于非浏览器的API客户端的标题。谢谢,非常好的捕获,现在我可以继续使用而不必担心了!但从“让Web更快”的角度分析,我仍然倾向于同意谷歌关于冗余的观点,并且仍然希望找到一个解决方案。Azure存储确实默认发送几个x-ms头,浏览器将忽略这些头。但是“Microsoft无法配置从任何存储调用返回的头”这不是很正确,因为使用Azure SDK我可以控制缓存头(我的问题的范围)、ContentEncoding、ContentMD5、ContentLanguage和其他一些我可以控制值的值,如ContentType。不管怎样,根据你的回答,我不想说了。