Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 没有缓存控制或过期标头的CDN强缓存问题_Azure_Http_Caching_Cdn_Etag - Fatal编程技术网

Azure 没有缓存控制或过期标头的CDN强缓存问题

Azure 没有缓存控制或过期标头的CDN强缓存问题,azure,http,caching,cdn,etag,Azure,Http,Caching,Cdn,Etag,我们使用Azure CDN来服务图像,我试图理解为什么图像被web浏览器强缓存,即使图像响应中没有缓存控制或Expires头 例如,从Azure CDN为映像返回以下响应头: HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Content-MD5: KuQCJm6GQyEjejWwmRgRwQ== Content-Type: image/jpeg Date: Tue, 21 Nov 2017 00:15:57

我们使用Azure CDN来服务图像,我试图理解为什么图像被web浏览器强缓存,即使图像响应中没有缓存控制或Expires头

例如,从Azure CDN为映像返回以下响应头:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Content-MD5: KuQCJm6GQyEjejWwmRgRwQ==
Content-Type: image/jpeg
Date: Tue, 21 Nov 2017 00:15:57 GMT
Etag: 0x8D523228F0F4C42
Last-Modified: Sat, 04 Nov 2017 01:22:47 GMT
Server: ECAcc (meb/A744)
X-Cache: HIT
x-ms-blob-type: BlockBlob
x-ms-lease-status: unlocked
x-ms-request-id: 00822b7c-001e-0045-4194-61d246000000
x-ms-version: 2009-09-19
Content-Length: 5143

<<image data>>
HTTP/1.1200正常
接受范围:字节
访问控制允许来源:*
内容-MD5:KuQCJm6GQyEjejWwmRgRwQ==
内容类型:图像/jpeg
日期:2017年11月21日星期二00:15:57 GMT
Etag:0x8D523228F0F4C42
最后修改:2017年11月4日星期六01:22:47 GMT
服务器:ECAcc(meb/A744)
X缓存:命中
x-ms-blob-type:BlockBlob
x-ms-lease-status:未锁定
x-ms-request-id:00822b7c-001e-0045-4194-61d246000000
x-ms-version:2009-09-19
内容长度:5143
如您所见,返回了一个Etag头,但没有缓存控制过期

当从浏览器(Chrome)跟踪网络流量(使用Fiddler)时,我们没有看到对这些图像的任何后续请求

我对Etags的理解是,对该映像的后续请求应发送回服务器(弱缓存),然后,如果文件没有更改,服务器可以返回304 not modified响应


有人能解释一下吗?

我认为您需要标题缓存控制:必须重新验证才能让浏览器检查源代码,如果没有更改,则返回304 mot MODIFED

但就缓存而言,这并不是最优的

您最好使用QS更改(“v=?”)使js无效,或者设置一个较短的expires/max age标头(60/120秒,或者任何您可以处理的部署,5分钟??)


如果将expires标头与etags结合使用,则浏览器仍然会在过期后从服务器接收到一个未修改的邮件。

谢谢。问题在于缺少缓存控制:必须重新验证。