Cocos Creator资源MD5缓存清理:开发与发布环境处理
你是否曾遇到过Cocos Creator项目中资源更新后浏览器仍加载旧版本的问题?或者打包发布后用户反馈资源错乱?这些常见问题往往源于MD5缓存机制未正确处理。本文将从开发与发布两个场景,详解如何通过Cocos Engine内置工具与自定义脚本解决MD5缓存清理难题,确保资源更新准确高效。
MD5缓存机制原理
MD5缓存是Cocos Creator用于优化资源加载性能的核心机制。引擎会对每个资源文件计算唯一的MD5哈希值,并将其附加到文件名中(如texture.png变为texture.abc123.png)。当资源内容变化时,MD5值改变,浏览器/客户端会自动请求新文件,避免使用缓存的旧版本。
但在实际开发中,这一机制常引发两类问题:
- 开发环境:临时文件堆积导致磁盘空间占用过大,编辑器资源引用异常
- 发布环境:CDN缓存未及时刷新,用户端出现资源版本不匹配
开发环境清理方案
自动清理脚本
Cocos Engine提供了内置的缓存清理工具scripts/clear-cache.js,通过递归删除.gitignore中指定的缓存目录实现MD5缓存清理。核心实现如下:
function deleteFolderRecursive (dirPath) {
if (fs.existsSync(dirPath)) {
if (fs.lstatSync(dirPath).isDirectory()) {
fs.readdirSync(dirPath).forEach((file) => {
const curPath = path.join(dirPath, file);
if (fs.lstatSync(curPath).isDirectory()) {
deleteFolderRecursive(curPath);
} else {
fs.unlinkSync(curPath); // 删除缓存文件
}
});
fs.rmdirSync(dirPath); // 删除空目录
console.log(`deleting: ${dirPath}`);
}
}
}
使用方法:在项目根目录执行
node scripts/clear-cache.js
该脚本会读取项目根目录的.gitignore文件,清理所有匹配的缓存路径,包括MD5命名的临时资源文件和构建缓存。
编辑器内置功能
Cocos Creator编辑器提供了可视化的缓存清理入口:
- 顶部菜单栏选择 Cocos Creator > 偏好设置
- 在 项目设置 中找到 缓存清理 选项
- 勾选 MD5资源缓存 并点击 清理
此操作会触发与clear-cache.js相同的清理逻辑,但更适合不熟悉命令行的开发者。
发布环境处理策略
构建配置优化
在发布流程中正确配置MD5选项至关重要。通过 构建发布 面板的以下设置可最大化避免缓存问题:
- 启用MD5缓存:勾选后自动对所有资源应用MD5命名
- 合并资源:选择 合并所有JSON 和 合并所有JS 减少文件数量
- 版本控制:在
project.json中维护version字段,每次发布递增
CDN缓存控制
对于使用CDN部署的项目,需在服务器端配置缓存策略:
# Nginx配置示例
location ~* \.(png|jpg|jpeg|gif|js|css)$ {
expires 1y; # 长期缓存带MD5的资源
add_header Cache-Control "public, max-age=31536000, immutable";
# 对主入口文件设置不缓存
if ($request_filename ~* "index\.html") {
expires -1;
add_header Cache-Control "no-cache";
}
}
这种配置确保MD5命名的资源被长期缓存,而index.html等入口文件始终从服务器获取最新版本。
自动化清理工作流
集成到构建流程
通过修改项目package.json,可将缓存清理命令集成到构建脚本中:
{
"scripts": {
"build:web": "node scripts/clear-cache.js && cocos build -p web -m release"
}
}
执行npm run build:web时会自动先清理缓存再构建,确保发布包不包含旧版本资源。
版本发布检查清单
发布前建议执行以下检查:
- 运行
clear-cache.js清理本地缓存 - 确认构建面板中MD5选项已启用
- 检查
project.json的version字段已更新 - 测试环境验证资源加载是否正常
- CDN缓存已按计划刷新
常见问题解决方案
清理后资源引用错误
若执行清理脚本后出现资源缺失,可能是因为:
.gitignore配置错误导致必要文件被删除- 编辑器进程锁定缓存文件,需关闭编辑器后重试
可通过检查clear-cache.js的执行日志定位问题文件:
=================== ready to delete ===================
[ '/path/to/project/library', '/path/to/project/local' ]
=================== processing ===================
deleting: /path/to/project/library
发布后CDN缓存未更新
当确认服务器已部署新版本但用户仍加载旧资源时:
- 通过浏览器开发者工具的 Network 面板检查资源URL的MD5值
- 验证CDN服务商的缓存刷新是否生效
- 临时解决方案:在资源URL后添加查询参数(如
?v=20251003)强制刷新
总结与最佳实践
MD5缓存清理是Cocos Creator项目开发中保障资源一致性的关键环节。通过本文介绍的方法,你可以:
- 使用
scripts/clear-cache.js或编辑器功能高效清理开发环境 - 配置构建选项与CDN策略确保发布环境资源准确更新
- 建立自动化工作流减少人为操作失误
建议将缓存清理纳入每日开发流程,并在团队内部制定统一的资源更新规范。定期清理不仅能避免缓存问题,还能显著减少项目目录体积,提升构建速度。
官方文档:docs/CPP_CODING_STYLE.md 缓存清理工具源码:scripts/clear-cache.js 版本控制配置:package.json
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



