很多静态文件会不断修改,如何保证浏览器总是加载到修改后的版本?

一种方法是使用HTTP头消息,指定浏览器不得缓存(或者指定一个较短的缓存时间)。

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

但是,这样一来,浏览器每次访问都要下载相关文件,会增加宽带消耗,也不利于性能。
更常见的解决方法是,为每个静态文件的URL附加一个版本号或哈希作为查询字符串。文件每次更新,就更新一个版本号。


但是这种方法对于多个静态文件相互依赖的页面会产生问题。
因为HTML页面和静态资源文件往往不会同步部署上线。一旦新版的静态资源文件先上线,同时此时又有用户去加载老版本的HTML页面,就可能导致问题。
因此,更好的解决方法是。每当静态资源文件有内容变化,就改用一个全新的文件名。


这样就会使得HTML页面和静态资源的版本总是匹配的,再配上灰度发布,就能实现平滑发布。

你可能感兴趣的:(很多静态文件会不断修改,如何保证浏览器总是加载到修改后的版本?)