在没有服务器代码的情况下发布时强制重新加载javascript文件

Force reload Javascript-file on publish WITHOUT server code in view

本文关键字:新加载 加载 文件 javascript 布时强 服务器 代码 情况下      更新时间:2023-09-26

我有一个使用Javascript-File作为其逻辑的项目:

<script src="myMagicCode.js" ></script>

当我发布新版本时,客户端必须清除缓存以使新代码工作。

我通常可以通过添加一个参数来解决这个问题:
<script src="myMagicCode.js?version=1.23" ></script>

但是我太懒了,不能每次发布都这样做。所以我想让这个行为自动化。

包含脚本引用的页面是纯html,不能包含任何服务器代码

我有返回版本的服务器代码。

所以我的想法是将脚本代码更改为类似

的东西
<script src="api/GetJsUrl"></script>

其中api/GetJsUrl是一个GET-Action,包含类似

的内容
string url = "myMagicCode.js?Version="+GetCurrentVersion();
HttpContext.Response.AddHeader("Location", url);
return new HttpStatusCodeResult(307);

当发布新版本时,这会强制浏览器重新加载JS-File吗?或者只是api/GetJsUrl -请求被缓存,我有像以前一样的问题?

如果仍然存在问题:是否有更好的解决方案?

备注:我不寻找每次都重新加载javascript文件的解决方案。我需要一个只在部署新版本(版本号更改)时才重新加载文件的解决方案。

您可以使用像Grunt或Gulp这样的任务运行器:

http://gruntjs.com/

http://gulpjs.com/

他们可以检查,缩小,构建一些东西和做你想做的,寻找一些包含项目版本和编辑你的html的属性文件。它们甚至可以将你的js文件加入其中,并将其替换为index.html:

 <script src="compiled.js?_=1234567890"></script>