我们目前正在进行私有测试,因此仍在进行相当快速的更改,尽管很明显,随着使用量开始增加,我们将放缓这一过程.话虽如此,我们遇到的一个问题是,在我们推出一个带有新JavaScript文件的更新后,客户端浏览器仍然使用该文件的缓存版本,并且看不到更新.显然,在支持电话中,我们可以简单地通知他们执行ctrlF5刷新,以确保他们从服务器获得最新的文件,但最好在此之前处理.

我们目前的 idea 是,只需在JavaScript文件的名称上附加一个版本号,然后在进行更改时,增加脚本上的版本并更新所有引用.这肯定能完成任务,但在每个版本上更新引用可能会很麻烦.

因为我确信我们不是第一个处理这个问题的人,我想我应该把它扔给社区.当您更新代码时,您如何确保客户端更新其缓存?如果您正在使用上述方法,您是否正在使用简化更改的流程?

推荐答案

据我所知,一种常见的解决方案是在脚本的src链接上添加一个?<version>.

例如:

<script type="text/javascript" src="myfile.js?1500"></script>

在这一点上,我假设没有比查找-替换更好的方法来在所有脚本标记中递增这些"版本号"了吗?

你可能有一个版本控制系统来帮你?例如,大多数版本控制系统都有一种在签入时自动输入修订号的方法.

它看起来像这样:

<script type="text/javascript" src="myfile.js?$$REVISION$$"></script>

当然,总会有像this one这样更好的解决方案.

Javascript相关问答推荐

如何在Jest中调用setupFile下列出的文件所需的函数?

Math.random超出了最大调用堆栈

验证嵌套 colored颜色 代码的结果

如何访问react路由v6加载器函数中的查询参数/搜索参数

React存档iframe点击行为

Spring boot JSON解析错误:意外字符错误

为什么promise对js中的错误有一个奇怪的优先级?

v—自动完成不显示 Select 列表中的所有项目

我在我的Java代码中遇到了问题,代码的一部分看不到先前定义的对象

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

如何在Vue 3中创建自定义 Select 组件,并将选项作为HTML而不是props 传递?

如何将react—flanet map添加到remixjs应用程序

Next.js服务器端组件请求,如何发送我的cookie token?

try 使用javascript隐藏下拉 Select

如何将innerHTML字符串修剪为其中的特定元素?

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

当我在Reaction中创建一个输入列表时,我的输入行为异常

如何在 Select 文本时停止Click事件?

将基元传递给THEN处理程序

无法使用npm install安装react-dom、react和next