【问题标题】:Force reload Javascript-file on publish WITHOUT server code in view在没有服务器代码的情况下强制在发布时重新加载 Javascript 文件
【发布时间】:2017-01-06 23:58:23
【问题描述】:

我有一个项目使用 Javascript 文件作为其逻辑:

<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 文件吗?还是只缓存 api/GetJsUrl-Request 并且我遇到和以前一样的问题?

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

备注:我不会搜索每次都重新加载 JavaScript 文件的解决方案。我需要一个仅在部署新版本(版本号更改)时重新加载文件的解决方案。

【问题讨论】:

    标签: javascript asp.net-mvc http-headers http-redirect


    【解决方案1】:

    您可以使用 Grunt 或 Gulp 之类的任务运行器:

    http://gruntjs.com/

    http://gulpjs.com/

    他们可以 lint、缩小、构建一些东西并做你想做的事,查看一些包含项目版本的属性文件并编辑你的 html。 他们甚至可以将您的 js 文件合并为一个并在您的 index.html 上替换它:

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

    【讨论】:

    • 我们已经在那个项目中使用了 gulp(用于其他东西)。我会看看的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多