1、系统架构
2、遇到的问题
发布新版本后,浏览器未获取最新资源,手动刷新页面,获取到最新的资源。重新打开浏览器,浏览器依旧未获取到最新资源。
3、问题分析
发版后浏览器打开系统,直接取的是浏览器本地缓存,未向服务端确认资源是否已改变
更新前:
更新后:
拓展:可利用工具 ChromeCacheView 查看chrome浏览器的缓存数据
4、解决思路
让浏览器每次打开页面都向服务器确认资源是否已更新。
配置IIS服务容器,使请求返回的headers中增加Cache-Control:no-cache关键字
方式一:
IIS 网站的功能视图 -> HTTP 响应标头
方式二:
web.config文件增加节点
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
</customHeaders>
</httpProtocol>
说明:web.config 生效范围是当前目录及同级目录子目录下的资源,因此可以选择性的配置指定目录资源缓存方式
5、增加Cache-Control后的效果
浏览器每次都会向服务器确认资源是否更新,未更新则使用本地缓存,已更新则获取最新资源
第一次访问:
未更新再次访问:
更新后访问:

参考资料: