Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

前端缓存更新时机问题

  我们经常希望把一些常用的数据缓存到本地。存下来虽然简单,但却不知道应该何时更新,于是就可能让用户看到过旧的数据,甚至影响使用。其实一些实时性要求不高的数据可以在「真正用到」或「出错」时再更新,这样可以有有效避免非必要请求。
  一个最典型的例子就是「用户登录信息」。用户登录后我们会把用户名、用户头像链接等一些用户信息储存到本地。之后用户再访问页面时就不需要重新检测登录状态,直接取出这些数据作为登录依据来展示即可。有时候真正确定用户登录状态的 Session 会失效,我们本地存储的数据会导致用户依然看到自己是登录状态。但这并不影响使用,放着让用户认为自己是登录状态就好了。只有当用户真正操作自己的信息,后端做验证时发现 Session 无效,前端在收到后端的用户验证失效错误后再去清除用户登录信息,这也完全来得及,此时再提示用户登录即可。
  这就是「出错」时再更新的情况。但也许有人会纠结应该如何判断后端响应的用户验证失效错误呢?通常每个功能模块都是独立的,难道要在每个业务代码中的用户操作接口都做一次验证失效处理吗?如果真得这样我也宁愿不做!但其实我们需要的仅仅是一个 XHR 拦截器,比如 XCeptor,直接拦截 API 调用,对「用户验证失效错误」做一个统一处理即可。
  除了「出错」时更新外还有「真正用到」时更新。典型的例子就是 QQ 的好友头像。QQ 实际上是把好友列表缓存到了本地,并不会每次都更新好友的具体信息。只有当用户查看好友资料时才会更新好友头像。我觉得这是非常好的做法,至少它并不影响使用。可以把「查看好友资料」视为「真正用到」的一个操作。
  更多例子我就不一一举出了。总之很多东西都可以本地缓存,只要找到一个更新的时机就不会影响使用。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^