我有一个blob容器有限制的公共访问。Azure CDN就建立在上面。请找到下面的例子
缓存时间: 24小时
Azure存储网址:http://azstorage5.blob.core.windows.net/images/img15.jpg
CDN端点:http://az507925.vo.msecnd.net/
Azure存储SAS参数:?st=2020-12-07T19%3A21%3A09Z&se=2020-12-08T20%3A21%3A09Z&sr=c&sp=r&sig=STTE1p0ujzZr31ZjPaOlNoImCPcjss2GoRsOWDlpJuI%3D
最终CDN网址:http://az507925.vo.msecnd.net/images/img1.jpg?st=2020-12-07T19%3A21%3A09Z&se=2020-12-08T20%3A21%3A09Z&sr=c&sp=r&sig=STTE1p0ujzZr31ZjPaOlNoImCPcjss2GoRsOWDlpJuI%3D
如果我在CDN中将缓存行为设置为忽略查询字符串
问题:首次尝试访问图像img15.jpg时,将从blob容器中检索并缓存在CDN中。如果我在缓存过期(24小时)内使用不同的有效SAS令牌多次访问img15.jpg,那么它是从缓存中得到服务,还是为每个唯一有效的SAS令牌从blob容器中获取?
的最终目标:--我希望这个映像被缓存在CDN上,并且应该能够使用有效的SAS访问它,但只要缓存没有过期,就不会击中blob容器。这是一个可能的用例场景吗?
发布于 2020-12-08 09:26:10
对于您的问题,如果对同一个blob使用不同的有效SAS令牌(如blob1),则将首次从blob容器直接获取具有不同SAS的blob1。
例如,首先使用blob 1?sastoken1 1进行访问,然后使用blob 1?sastoken1 2进行访问,此时,blob 1?sastoken1 2将直接从blob容器中获取。
我建议您可以使用同样的sastoken,或者您可以定义一个存储访问策略来访问blob。
发布于 2022-02-23 16:41:36
如果您将CDN配置为缓存每个sas字符串,则预期不会缓存文件,因为对于CDN,它们是不同的文件。
如果您配置为忽略sas字符串,这将导致未经身份验证的用户获得对缓存文件的访问(只是省略参数,或者在那里粘贴垃圾)。
这里的解决方案是正确地构造sas字符串。
您可以为文件提供相同的参数,以完成今天的所有客户端:今天访问开始时间00:00,第二天结束时间。
这将使今天所有请求文件的客户端都有缓存副本,并提前一天完成下载。
https://stackoverflow.com/questions/65189636
复制相似问题