
egg.js 静态文件缓存问题及解决方案
问题描述:
使用 Egg.js 作为静态文件服务器时,每次重启服务器后,首次访问静态文件都需要刷新页面才能看到更新后的内容。
解决方案:
Egg.js 默认在生产环境下使用 config.default.js 文件,其中 maxAge 属性设置为 0,意图禁用缓存。然而,此设置在生产环境下无效。正确的做法是在 config.prod.js 文件中配置 maxAge 属性,并使用 --env=prod 参数启动服务器。
// config.prod.js
module.exports = {
static: {
maxAge: 0, // 禁用缓存
},
};
// 启动命令 egg-scripts start --env=prod
为了最佳实践,建议对不同类型的静态文件采取不同的缓存策略:
- HTML 文件: 强烈建议禁用缓存,确保每次访问都获取最新的 HTML 内容。
- CSS 和 JS 文件: 可以启用缓存,并通过添加版本号(例如使用文件哈希值)到文件名中来控制缓存更新。这样,即使启用缓存,更新后的文件也会被浏览器识别为新的资源并下载。
通过以上配置和策略,可以有效解决 Egg.js 静态文件服务器重启后首次访问需要刷新的问题,并确保所有用户始终访问最新的静态文件内容。










