场景:
当我们重新部署前端项目的时候,如果用户一直停留在页面上并未重新打开浏览器页面,会存在功能使用差异性的问题,因此,当前端部署项目后,需要提醒用户有去重新加载页面。
思路
当我们重新部署项目之后,可以通过请求响应头的 ETAG 字段来判断应用是否已经更新
ETag
(实体标签)是 HTTP 协议中的一种响应头,用于标识资源的特定版本或状态。它的主要作用是优化缓存和提高资源请求的效率。
ETag 的生成:
服务器根据资源的内容或状态生成一个唯一标识符(通常是哈希值)。如果资源的内容发生改变,ETag 也会相应改变。
这样我们就可以通过轮询请求项目地址,判断响应头的 ETag 字段是否改变来通知用户项目已经更新,然后让用户刷新页面。
社区插件
version-polling
这个库已经实现了这个功能,使用的 head
请求方式大大减小了服务器的压力,并且请求放在了 worker 里面,这样也不会影响主进程的流程。需要的可以去查看文档使用
拓展
HTTP 的 HEAD 方法是一种请求方法,功能与 GET 方法类似,但区别在于它 只请求响应的头部信息,而不获取响应体内容。