在文档"Optimize Cache - Make the Web Faster - Google Developers"中,Google声明了
指定 Expires 或 Cache-Control中的一个非常重要 所有可缓存的最大年龄,以及上次修改或 ETag 之一 资源。指定Expires和Cache-Control是多余的: max-age,或指定Last-Modified和ETag。
我正在使用Microsoft.WindowsAzure.StorageClient中的类将图像上传到blob容器,实际上与开源项目Azure Storage Explorer中可以看到的代码相同。
生成的图像与BOTH Last-Modified和ETag:
一起提供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存储仅使用两个指令中的一个来消除此减少?
答案 0 :(得分:0)
我个人不会担心这两个标签被发送回来,因为这是RFC 2616实际推荐的。
13.3.4何时使用实体标签和最后修改日期的规则
...
HTTP / 1.1源服务器:
...
... HTTP / 1.1源服务器的首选行为是发送强实体标记和 Last-Modified 值。 < / p>
HTTP 1.1客户端必须在任何缓存条件请求中使用实体标记,如果实体标记和最后修改存在,应该使用两者。
我希望这将澄清为什么两个标记都从Azure存储服务器发回。
答案 1 :(得分:0)
简短的回答是你不能。
在考虑这一点时,重要的是要记住,当您访问blob存储而不访问Web服务器上的文件时,您正在使用碰巧返回文件的其他API。
Microsoft无法删除他们认为对存储API至关重要的标头。
如果您担心标题过多,则响应中还包含几个x-ms -...标头,这些标头适用于非浏览器的API客户端。