为什么需要区分移动端与PC端缓存
当同一个URL的响应内容会因访问设备不同而变化时,缓存就必须区分来源。常见场景包括:移动端跳转至独立模板、PC端与移动端展示不同尺寸图片、或根据User-Agent返回不同版本页面。
核心原理:自定义缓存键
CDN与Nginx缓存均以缓存键(Cache Key)作为存储索引。默认缓存键通常只包含域名与URL,无法区分来源设备。因此需要将设备类型或User-Agent纳入缓存键,例如将缓存键设置为 $host$uri$mobile_flag。
通过1Panel配置Nginx缓存键
在1Panel中,可通过“网站”→“反向代理”或“配置文件”修改站点Nginx配置。基本步骤如下:
- 在http或server级别添加map指令,根据User-Agent判断是否为移动设备;
- 定义一个变量,如 $is_mobile,并使用正则匹配常见移动标识;
- 在后端代理缓存配置中,将 proxy_cache_key 设置为含该变量的组合键;
- 重载Nginx使配置生效。
在CDN控制台配置缓存键
如果使用第三方CDN(如阿里云、腾讯云等),通常可在CDN控制台的“缓存配置”或“自定义HTTP头”中开启“Device Type”或“User-Agent”构成缓存键。具体名称因平台而异,请以实际控制台为准。
注意事项
- 如果页面采用流式响应或完全自适应,无需区分,避免缓存碎片增加回源率;
- 缓存键粒度过细会降低命中率,应结合成本与业务需要设计;
- 由于移动设备和PC设备可能共用CDN边缘节点,务必确保CDN能读取到原始User-Agent,避免源站返回相同内容。