如何使客户网站的访问者始终检索最新版本的第三方.js库



所以我有一个第三方JavaScript库,我的客户注入到他们的网站中,我想确保他们的访问者始终获得最新版本的脚本。

我的客户不必更改其实现,因此强制他们将版本附加为查询参数 (example.com/mylibrary.js?v=3) 是不可接受的。

不缓存也是不可接受的

https://example.com/MyLibrary.js

这个库在 https://example.com 上与我的 api 进行了大量交互,因此有时在部署并更改了 api 和 js 库之后,旧的脚本版本不再兼容。因此,具有缓存版本的用户不会立即获得最新版本的javascript,这可能会导致应用程序中断。

我的客户访问了大量网站,因此我使用 cloudflare 来硬缓存 https://example.com/MyLibrary.js,我希望在拥有完全自动化的版本控制过程的同时最大限度地减少服务器上的负载。

到目前为止,我最好的计划是让我的 webpack 构建过程创建一个包含最新版本脚本的 https://example.com/version.txt,并将库输出文件重命名为 MyLibrary。{版本号}.js。

然后.js我的客户注入的 MyLibrary 将只包含用于检查版本的代码.txt然后使用 MyLibrary 注入脚本标记。{版本号}.js。

所有内容都将在每次部署时进行硬缓存.txt并清除版本缓存。

这不可能吗? 笨? 有没有更好的方法? 谷歌如何使用他们所有的脚本?

我建议使用语义版本控制。您的 API 应将版本号作为其 URL 的一部分,或者向其发出的请求应指定他们要使用的 API 的主要版本。对 API 进行重大更改时,将创建一个与前一个版本一起运行的新主要版本。

当涉及到调用您的 API 的 JS 文件时,也许您应该将主要版本作为访问它的 URL 的一部分。然后,服务器必须发送适当的标头,告诉客户端它需要获取新的次要版本,并在有更新时忽略缓存。如何做到这一点取决于您的后端。

换句话说,只要更改不会破坏以前的代码,客户端就不必更改其实现,但如果存在重大更改,旧文件仍将与旧 API 一起使用。当您发现没有人再使用旧 API 版本时,可以选择停止支持它们。

相关内容

最新更新