在源站的配置中,很多情况会使用 URI 参数来表示不同的内容。比如 http://www.example.com/volcano.png?version=1 和 http://www.example.com/volcano.png?version=2 表示不同的文件。在这种情况下,参数是不能被忽略的。不同参数的 URI 应该作为不同的文件进行缓存。
但也有一些情况,URI 参数和文件无关。比如 http://www.example.com/volcano.png?token=358ar7b。 这里的 token 参数表示一个认证信息。在这种情况下,参数是可以被忽略的。不同参数的 URI 应该作为同一个文件进行缓存。
在本教程中,我们将使用 TOS 对象存储服务作为 CDN 源站,测试缓存键值的不同配置以及对应的测试结果。
预计部署时间:50分钟
级别:初级
相关产品:内容分发网络 CDN
受众: 通用
创建 TOS 存储桶,并创建 cdntest 名称文件夹,用于存放测试文件。
查看文件详情,可以看到文件访问 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
# 将 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
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
# 将 TOS 文件的 URL 链接中的主机名改为加速域名,且将 ? 后的参数随意修改为其他值即可。 curl -vo /dev/null http://<加速域名>/cdntest/byte.png?12344
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 将视为请求同一个文件,从而降低回源率。
如果您有其他问题,欢迎您联系火山引擎技术支持服务。