Web 技术研究所

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

差异化加载与软件升级包

  去年夏天我在「差异化加载」这个深坑里纠结了好久,有人觉得我的想法简直丧心病狂。后来我也匆匆忙忙地写了个示例,但由于各种原因,最终还是没有在当时的项目里启用这个方案。当时纠结的只是数据的差异化,其实静态资源的差异化加载也是坑。
  当不考虑 SEO 的时候,我们希望尽可能的做到前后端分离。也就是说,前端的部分全都是静态资源。那么这些静态资源的版本迭代要如何做到差异化加载呢?难道直接像数据那样计算对行、对词级别的增删改?这好像是不行的,因为很多静态资源都使用了不可逆的压缩(只要同时加载一份 .map 才能恢复的压缩)。而且这些资源是被放到 CDN 上的,CDN 服务器不会去做版本差异计算这么繁琐的事情。
  这个问题看似挺棘手,但也可以通过一个「软件升级包」的概念来解决。软件使用「升级」的方式从一个版本升到另一个版本要比重新下载一个新版本快得多(当然有些流氓软件里所谓升级其实也是重新下载)。其实在项目中「前端资源」也是一个软件包的概念,而更新则是软件升级的概念,这样就可以做到差异化升级。
  我的想法是,将所有资源都以前端可以管理的方式存储。每次版本发布时都为临近的若干个版本做升级版并发到 CDN,前端根据自己当前的版本下载升级包后更新到最新版本。如果过旧的版本没有匹配到升级包则重新下载完整版本。这样就可以实现前端程序整套的差异化加载。
  但其实我自己还有一个纠结点。「将所有资源都以前端可以管理的方式存储」要怎么做?localStorage?感觉有点不太靠谱的样子,所以这个做法暂时还是保留,等我想通了再写 Demo。
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^