欢迎访问晨星博客!
静态资源缓存的可靠性,取决于缓存键是否能准确表达内容版本。对脚本、样式、图片、字体这类可长期复用的文件,延长 Cache-Control 的 max-age 能减少重复回源,让浏览器和边缘节点在后续访问中直接命中副本;但如果文件内容更新后 URL 保持不变,旧缓存仍会被视为有效资源,用户看到的可能是过期样式或旧图片。内容指纹的作用,就是把内容变化映射到缓存键上,使资源 URL 本身成为版本标识。
常见做法是在文件名或查询参数中加入哈希、版本号等指纹信息。文件未变时,URL 不变,长缓存继续生效;文件一旦变更,构建流程或主题更新会生成新的 URL,浏览器与 CDN 会将其当作新资源重新请求,旧 URL 的缓存自然失去作用。这种机制让“长缓存”和“及时更新”不再冲突:缓存时间可以放到按天甚至按月量级,而更新时效由指纹变化保证。
在 WordPress 类站点中,这一配合尤其重要。/wp-content/uploads/ 下的媒体文件、主题与插件目录中的静态资源,通常适合作为长缓存对象;但如果只是手动覆盖同名文件,没有同步更新引用地址或版本参数,边缘节点仍可能继续返回旧内容。因此,静态资源策略不能只设置 TTL,还要确认发布流程能够稳定产生指纹变化。对于无法自动指纹化的资源,应保留主动刷新或预热手段,避免改动后长时间不生效。
与静态资源相比,HTML 页面不适合简单套用同一套长缓存逻辑。公开文章页、列表页可以做短时间的边缘缓存,并配合 ETag 等协商缓存机制,让未变更内容快速返回 304;带登录态、个性化参数或后台路径的请求则应明确排除在公共缓存之外。真正稳定的缓存体系,不是把所有内容都尽量缓存,而是让静态资源吃命中率,让动态内容保持新鲜度,再用内容指纹和主动失效把两者连接起来。
参与讨论
暂无评论,快来发表你的观点吧!