URL的传递参数为变量导致CDN缓存命中率低

问题描述

在使用阿里云CDN时,CDN的缓存命中率很低。在浏览器中,按F12键,在访问页面中,单击Network,然后在Name选项中,单击Headers,在Response Headers模块中,确认URL响应头信息中X-CacheMISS,则表示没有命中CDN缓存。但是在页面中,对应文件的URL响应头信息的X-Cache为HIT。

说明:本案例以Chrome浏览器为例。

问题原因

没有开启CDN的过滤参数功能。

解决方案

以下是关于CDN缓存命中率的说明以及CDN命中率低的相关解决方案。

CDN命中率说明

  • CDN命中表示可以直接通过缓存获取到需要的数据。
  • CDN没有命中表示无法直接通过缓存获取需要的数据,需要再次查询数据库或者执行其它的操作。一般情况下,可能是由于缓存中根本不存在所需数据,或者缓存已经过期。

开启过滤参数功能

  1. 可能由于没有开启CDN的过滤参数功能,导致URL中传递参数为变量。以如下URL为例,其对应的文件为ArrowScene.ccbi,但是每一次打开该文件时,URL中“?_t=”字段后的数字为变量,所以CDN并不会缓存该数据。
    http://example.com/movie/XSHD/res/ccb/ArrowScene.ccbi?_t=xxxxxxxxxxxxxx
  2. 登录CDN控制台,开启过滤参数功能。关于如何开启过滤参数功能,请参考过滤参数
    说明:开启该功能后,“?_t=”字段后的参数将被忽略。

适用于

  • CDN