具有 SAS 令牌缓存机制的 Azure CDN
Azure CDN with SAS token caching mechanism
我有一个 public 访问受限的 blob 容器。 Azure CDN 建立在它之上。请找到下面的例子
缓存持续时间:24 小时
Azure 存储 URL: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
中将缓存行为设置为 Ignore query strings
问题:第一次尝试访问图像img15.jpg时,它将从blob容器中检索并缓存在CDN中。如果我在缓存过期(24 小时)期间使用不同的有效 SAS 令牌多次访问 img15.jpg,它会从缓存中提供还是会从 blob 容器中获取每个唯一的有效 SAS 令牌?
最终目标:我希望将图像缓存在 CDN 上,并且应该能够使用有效的 SAS 令牌访问它,但只要缓存不命中 blob 容器没有过期。这是一个可能的用例场景吗?
对于您的问题,如果对同一个 blob(如 blob1)使用不同的有效 SAS 令牌,则具有不同 SAS 令牌的 blob1 将在第一次访问时直接从 blob 容器中获取。
比如先用blob1?sastoken1访问,再用blob1?sastoken2访问,此时会直接从blob容器中取出blob1?sastoken2。
我建议你可以使用相同的sastoken,或者你可以定义一个stored access policy来访问blob。
如果您将 CDN 配置为缓存每个 sas 字符串,则预计不会缓存文件,因为对于 CDN 它们是不同的文件。
如果您配置为忽略 sas 字符串,这将导致未经身份验证的用户访问缓存文件(只需省略参数,或在此处粘贴垃圾)。
这里的解决方法是正确构造sas字符串。
您可以为今天所有客户端的文件提供相同的参数:
访问开始时间 00:00 今天,
结束时间第二天结束。
这将使今天请求文件的所有客户端都有缓存副本,并提前一天完成下载。
我有一个 public 访问受限的 blob 容器。 Azure CDN 建立在它之上。请找到下面的例子
缓存持续时间:24 小时
Azure 存储 URL: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
中将缓存行为设置为 Ignore query strings问题:第一次尝试访问图像img15.jpg时,它将从blob容器中检索并缓存在CDN中。如果我在缓存过期(24 小时)期间使用不同的有效 SAS 令牌多次访问 img15.jpg,它会从缓存中提供还是会从 blob 容器中获取每个唯一的有效 SAS 令牌?
最终目标:我希望将图像缓存在 CDN 上,并且应该能够使用有效的 SAS 令牌访问它,但只要缓存不命中 blob 容器没有过期。这是一个可能的用例场景吗?
对于您的问题,如果对同一个 blob(如 blob1)使用不同的有效 SAS 令牌,则具有不同 SAS 令牌的 blob1 将在第一次访问时直接从 blob 容器中获取。
比如先用blob1?sastoken1访问,再用blob1?sastoken2访问,此时会直接从blob容器中取出blob1?sastoken2。
我建议你可以使用相同的sastoken,或者你可以定义一个stored access policy来访问blob。
如果您将 CDN 配置为缓存每个 sas 字符串,则预计不会缓存文件,因为对于 CDN 它们是不同的文件。
如果您配置为忽略 sas 字符串,这将导致未经身份验证的用户访问缓存文件(只需省略参数,或在此处粘贴垃圾)。
这里的解决方法是正确构造sas字符串。
您可以为今天所有客户端的文件提供相同的参数: 访问开始时间 00:00 今天, 结束时间第二天结束。
这将使今天请求文件的所有客户端都有缓存副本,并提前一天完成下载。