效果手动 block 整个 domain , 整个页面正常展示
文章插图
图片
IndexDB线上有 CDN 保证了,线下就轮到 IndexDB 了,基于业务简单的增删改查,选用 localForage 三方库足矣 。
axios.interceptors.response.use(async (resp) => {const { config } = respconst { url } = config// 是否有缓存tag,用于更新CDN数据 。目前是定时服务在跑,访问页面带上tagif (this.hasCdnTag() && this.isWhiteApi(url)) {this.updateCDN(config, resp)}if(this.isIndexDBWhiteApi(url)){this.updateIndexDB(config, resp)}return resp;},async (err) => {const { config } = errconst { url } = config// 是否命中缓存策略if (this.isWhiteApi(url) && this.useCache()) {return this.fetchCDN(config).then(res => {pushLog(`cdn缓存数据已命中,请处理`, SentryTypeEnum.error)return res}).catch(()=>{pushLog(`cdn缓存数据未同步,请处理`, SentryTypeEnum.error)if(this.isIndexDBWhiteApi(url)){return this.fetchIndexDB(config).then(res => {pushLog(`IndexDB缓存数据已命中,请处理`, SentryTypeEnum.error)return res}).catch(()=>{pushLog(`IndexDB缓存数据未同步,请处理`, SentryTypeEnum.error)})}})}});
总结总结下,优点包括不入侵业务代码 , 不影响现有业务,随上随用,尽可能避免前端纯白屏的场景 , 成本低 。劣势包括使用局限 , 不适合对数据实效性比较高的业务场景,不支持 IE 浏览器 。接口容灾我们也是刚弄不久 , 有许多细节与不足,欢迎沟通交流 。
接口容灾本意是预防发生接口服务挂了的场景 , 我们不会很被动 。原来是P0的故障,能被它降低为 P2、P3,甚至在某些场景下都不会有用户反馈 。
推荐阅读
- 胡歌身边的这个演员,竟然是国际反恐专家!我们都被他骗了
- 《一念关山》告诉我们,当女配们过于惊艳时,女主可以去打酱油了
- 遇到火灾我们应该如何报警呢 遇到火灾我们应该如何报警
- 桃子和海鲜一起吃了应该怎么办,桃子和海鲜一起吃会过敏吗
- 一起走进前卫狂热的初代偶像——费翔
- 《小满生活》秦昊坦言:在家与伊能静一起追剧,每个角色都有故事
- 诗珊的寓意,老公姓闫,我姓王,想请教下我们的孩子起什么名字?
- 聊聊 Calico BGP容器网络实践
- 聊聊常见的限流算法有哪些?
- 套门如何安装