You need to enable JavaScript to run this app.
导航
配置并测试 CDN 缓存键值功能
最近更新时间:2022.07.06 12:48:29首次发布时间:2022.07.06 12:48:29
前言

在源站的配置中,很多情况会使用 URI 参数来表示不同的内容。比如 http://www.example.com/volcano.png?version=1http://www.example.com/volcano.png?version=2 表示不同的文件。在这种情况下,参数是不能被忽略的。不同参数的 URI 应该作为不同的文件进行缓存。

但也有一些情况,URI 参数和文件无关。比如 http://www.example.com/volcano.png?token=358ar7b。 这里的 token 参数表示一个认证信息。在这种情况下,参数是可以被忽略的。不同参数的 URI 应该作为同一个文件进行缓存。

在本教程中,我们将使用 TOS 对象存储服务作为 CDN 源站,测试缓存键值的不同配置以及对应的测试结果。

关于实验

预计部署时间:50分钟
级别:初级
相关产品:内容分发网络 CDN
受众: 通用

环境说明
  1. 如果还没有火山引擎账号,点击此链接注册账号

  2. 您已开通火山引擎 CDN 服务,如果未开通,请先前往 CDN 开通页进行开通。

  3. 准备在中国大陆已备案的加速域名

  4. 开通并创建对象存储服务 TOS 资源

实验步骤

准备源站 TOS 资源

  1. 创建 TOS 存储桶,并创建 cdntest 名称文件夹,用于存放测试文件。
    alt

  2. 在 cdntest 文件中,上传一个文件,例如图片文件 byte.png,且访问权限为私有。
    alt

  3. 查看文件详情,可以看到文件访问 URL,复制并保存至记事本。

示例中 URL 格式如下:
https://XXXX.tos-cn-beijing.volces.com/cdntest/byte.png?X-Tos-Algorithm=TOS4-XXXX&X-Tos-Credential=AKTXXX&X-Tos-Date=2022XXX&X-Tos-Expires=3600&X-Tos-SignedHeaders=host&X-Tos-Security-Token=STSeyJBXXXX&X-Tos-Signature=f5fXXXX

alt

  1. 接下来,我们将针对 URL 中 byte.png? 的 “?“ 后的参数进行 CDN 缓存参数配置测试。

部署 CDN 环境

  1. 创建 CDN 域名,配置源站为先前创建的 TOS 存储桶,并开启私有桶访问。
    alt

  2. 在缓存配置页签缓存键值下方,点击 添加缓存键值规则,参考如下进行配置。
    alt

  3. 使用 curl 命令进行测试。

# 将 TOS 文件的 URL 链接中的主机名改为加速域名,其他参数保持不变。
curl -vo /dev/null http://<加速域名>/cdntest/byte.png?X-Tos-Algorithm=TOS4-XXXX&X-Tos-Credential=AKTXXX&X-Tos-Date=2022XXX&X-Tos-Expires=3600&X-Tos-SignedHeaders=host&X-Tos-Security-Token=STSeyJBXXXX&X-Tos-Signature=f5fXXXX
  1. 观察多次访问的返回结果。
4.1 首次访问结果将 miss CDN 缓存,如下
...
< HTTP/1.1 200 OK
< Server: Byte-nginx
< Content-Type: image/png
< Content-Length: 3252
< Connection: keep-alive
< Accept-Ranges: bytes
< Age: 0
...
< Via: cache11.xamp03,cache02.hdcu02
< X-Bdcdn-Cache-Status: TCP_MISS,TCP_MISS
< X-Response-Cache: miss
< X-Tos-Cs-Type: CDN
...

4.2 第二次访问开始 hit 命中 CDN 缓存,如下
...
< HTTP/1.1 200 OK
< Server: Byte-nginx
< Content-Type: image/png
< Content-Length: 3252
< Connection: keep-alive
< Accept-Ranges: bytes
< Age: 2268
...
< X-Bdcdn-Cache-Status: TCP_HIT
< X-Request-Ip: 180.184.71.21
< X-Response-Cache: edge_hit
...
< via: cache02.hdcu02
  1. 这次,更换访问的 URL 再次进行 curl 测试。
# 将 TOS 文件的 URL 链接中的主机名改为加速域名,且将 ? 后的参数随意修改为其他值即可。
curl -vo /dev/null http://<加速域名>/cdntest/byte.png?12344
  1. 观察多次访问的返回结果。
6.1 从首次开始访问起,每次均会命中 CDN 缓存。
...
> GET /cdntest/byte.png?12344 HTTP/1.1
> Host: xxxxx
> User-Agent: curl/7.79.1
...
< HTTP/1.1 200 OK
< Server: Byte-nginx
< Content-Type: image/png
< Content-Length: 3252
< Connection: keep-alive
...
< Via: cache63.xamp03,cache05.sjzcm04
< X-Bdcdn-Cache-Status: TCP_HIT
< X-Request-Ip: 120.244.140.217
< X-Response-Cache: edge_hit
< X-Response-Cinfo: 120.244.140.217
< X-Tos-Cs-Type: CDN

实验总结

当客户的不同请求的URL中含有复杂的参数,但实际访问的同一个文件时,由于我们将 CDN 的缓存键值配置为删除全部参数,CDN 将视为请求同一个文件,从而降低回源率。

如果您有其他问题,欢迎您联系火山引擎技术支持服务