又拍云
4.7 / 5.0
声明:VPS主机测评网仅分享信息/测评(有时效性),不销售或代购、不提供任何支持,请自行辨别。

评测概述

cdn 加速的关键是缓存。但缓存更新不及时会导致用户看到旧内容。常见的解决方案有两种:给静态资源加版本号(或 hash)和手动/CDN API 刷新目录。

本文分析两种策略的优劣,并给出实战建议。

一、为什么需要缓存刷新?

CDN 节点缓存静态文件(CSS、JS、图片)以加速访问。默认缓存时间可能长达数天。当你更新文件后,CDN 边缘节点可能还保留旧版本,导致用户看到错误样式或功能异常。

二、策略1:版本号/哈希文件名

原理:修改文件时改变文件名,如 style.cssstyle.v2.cssstyle.8a3f2.css。HTML 中引用新文件名,CDN 视作新文件,不会读旧缓存。

优点:

  • 无需主动刷新 CDN 缓存。
  • 可同时使用新旧版本,不影响线上用户。
  • 适合前后端分离或构建工具(webpack、vite 自动加 hash)。

缺点:

  • 需要修改 HTML 中的链接(可用构建工具自动替换)。
  • 如果 HTML 本身也被 CDN 缓存,需要配合其他策略。

三、策略2:CDN 目录/URL 刷新

原理:通过 CDN 管理后台或 API 提交刷新请求,强制 CDN 节点失效指定文件或目录。

优点:

  • 不需要改文件名,HTML 内容不变。
  • 适合内容管理系统(如 WordPress)动态生成页面。

缺点:

  • 操作稍麻烦(可 API 自动化)。
  • 刷新有延迟(几十秒到几分钟)。
  • 某些 CDN 对刷新次数有限制。

四、实战组合策略

对于大多数网站,建议混合使用:

  • **CSS、JS、字体等静态资源**:使用版本号或哈希构建(webpack 的 output filename 加上 `[contenthash]`)。
  • **图片、视频等媒体文件**:一般不频繁更新,无需特殊处理。如更新,可单独刷新文件 URL 或使用新文件名。
  • **HTML 页面**:如果页面也走 CDN,建议设置较短的缓存时间(如 5 分钟),或者使用 CDN 缓存刷新 API 在发布时主动触发。

对于 WordPress 等动态网站,可以使用 CDN 插件(如又拍云 WordPress 插件)自动刷新。

五、示例:WordPress + 又拍云自动刷新

  1. 安装又拍云 WordPress 插件。
  2. 配置 CDN 域名和 API 密钥。
  3. 启用“文章发布时刷新 CDN 缓存”。
  4. 在主题中,对 CSS/JS 文件使用版本号(如 style.css?ver=1.0.1 或直接用文件版本号函数 filemtime)。

代码示例:

<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri(); ?>/style.css?ver=<?php echo filemtime(get_stylesheet_directory() . '/style.css'); ?>">

这样文件修改后,URL 改变,CDN 自动回源取新文件。

六、总结建议

  • 小型个人站点:手动刷新或等缓存过期即可,没必要过度工程。
  • 企业站或频繁更新站点:采用版本号策略 + 发布时 API 刷新 HTML 页面。
  • 使用 CDN 后台:熟悉你的 CDN 是否提供目录批量刷新功能,大部分国内 CDN 都支持。