Azure Blob SAS和Cache-Control确保缓存资源

时间:2017-10-23 21:22:43

标签: html azure caching azure-storage-blobs

我们正在提供存储在Azure Blob容器中的私有资源(图像,文件......)。

使用https://myaccount.blob.core.windows.net/file.img?sv=2015-04-05&ss=bf&srt=s&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=F%6GRVAZ5Cdj2Pw4tgU7IlSTkWgn7bUkkAg8P6HESXwmf%4B实现安全性,为每个资源请求创建安全性,例如,两个请求意味着两个不同的访问令牌。

通常,安全URL由文件名组成,并且令牌作为查询字符串传递,例如, {{3}}

资源的响应包含Cache-Control标头(Cache-Control:max-age = 31536000?

图片和视频类型的资源使用常规HTML或元素存在于网站中。

可以通过这种方式提供资源是否可以通过浏览器缓存

谢谢大家!

1 个答案:

答案 0 :(得分:0)

可以将缓存头添加到共享访问签名。

这指示Azure Blob作为HTTP响应的一部分返回相应的缓存标头。

这是在c#中可以做到的方式:

    var policy = new SharedAccessBlobPolicy();
    var headers = new SharedAccessBlobHeaders() { CacheControl = "max-age=" + MaxCacheAgeInDays * 24 * 60 * 60 };
    var blockBlob = _container.GetBlockBlobReference(name);

    var result = _baseUrl + blobName + blockBlob.GetSharedAccessSignature(policy, headers);

希望这对其他人有帮助。

PS:对于其他HTTP标头也可以这样做。