JavaScript 版本控制:从 FE 管理版本
Posted
技术标签:
【中文标题】JavaScript 版本控制:从 FE 管理版本【英文标题】:JavaScript version control: Managing versions from FE 【发布时间】:2018-02-05 21:06:27 【问题描述】:场景:
我正在尝试提出一种在 JS 中实现版本控制的方法,它满足两个前提:
-
缓存方式
很少(或理想情况下没有)后端调用
因此我想出了这个方案:
每当有新版本可用时,我都需要 FE 重新加载内容,因此实现此目的的一种简单方法是向 src 链接添加版本标签:
<script type="text/javascript" src="myfile.js?15.6.0"></script>
我可以添加一些模板,所以版本号可以在别处定义,比如:
<script type="text/javascript" src="myfile.js?$$RELEASE_ID$$"></script>
问题:
我需要调用后端,以了解最新版本(后端将从pom.xml
文件中读取它,然后返回)
问题:
有什么方法可以让前端知道最新版本是什么?
谢谢。
【问题讨论】:
我不清楚你的情况。您是否希望前端在浏览器中长时间保持加载?新版本多久发布一次? 1) 可以,但这不是强制性的。 2) 新版本最多可以每天发布。 如果不调用服务器(或一些通用 API),就无法知道服务器上的内容。为什么你不想轮询服务器?假设 FE 确实不时向服务器发送 http 请求,您可以将版本附加到任何 http 响应中,并在您的 FE 上检查任何响应以了解版本更改。虽然这会节省一些 http 请求,但与轮询相比,这将是 FE 的主要开销。 谢谢@ronenmiller。您认为在 FE 级别管理版本是一个坏主意吗?最简单的方法是对后端进行 REST 调用,询问当前版本,对吧? 支持您的要求,是的。但是,通常当您 src 具有更改版本的文件时,服务器将在刷新时推送最新版本(除非另有配置)。因此,即使在更改时,您也必须刷新,所以我认为这样做没有任何意义。除非在版本更改时立即更新非常关键。 【参考方案1】:我会使用 buildnumber-maven-plugin 来生成版本标签,例如混帐哈希。并且,将其嵌入到战争文件中的某个位置。要么
这是一个服务器端文件,例如web.xml,您可以在其中定义用于在 Java 代码中访问的上下文变量,或者 浏览器端的 html/JS 文件。见https://github.com/renfeng/event-manager/blob/master/pom.xml#L130-L155
【讨论】:
【参考方案2】:没有办法消除与后端的通信以获取有关服务器上文件状态的信息。但是,如果您希望请求尽可能少,您可以为您的 FE 设置一个间隔来轮询服务器。
如果您通常每天发布 BE 版本,则每 12、6、4 或您想要的任何小时数轮询服务器一次更改。这完全取决于更新文件的重要性。
也就是说,在大多数情况下,在后端更新文件版本时,一旦页面刷新(可能会在几个小时后发生),服务器将发送新的文件版本,除非另外配置了服务器缓存策略。
【讨论】:
以上是关于JavaScript 版本控制:从 FE 管理版本的主要内容,如果未能解决你的问题,请参考以下文章