如何在不重新启动 Web 应用程序的情况下以编程方式使 JavaScript 和 CSS 包失效或刷新

How to programmatically invalidate or refresh JavaScript and CSS bundles without restarting the web application?

本文关键字:包失效 CSS JavaScript 刷新 失效 方式使 编程 重新启动 Web 应用程序 情况下      更新时间:2023-09-26

我知道,当将捆绑包用于JavaScript和CSS时,Web应用程序正在缓存捆绑包并为其使用缓存密钥,如下所示:

<script src="/bundles/sampleJs?v=h-HGvCLcx-0T1kG3DBKIVBtGxEhtfpONQl5b_7BQuSo1"></script>

如何以编程方式刷新缓存的捆绑包(或仅刷新一个捆绑包)?

例如,如果我必须上传新的 CSS 更新 - 我想更新捆绑包而不必重新启动整个 Web 应用程序......

您可以通过以下两种方式解决此问题:

ASP.NET:

如果 html 页面是在服务器端生成的,比如说 ASP.NET,我只需在 Global.asax 中定义一个静态全局,该全局将附加到所有资源。

<script src="/bundles/sampleJs?cacheBustVersion=" + <%= @cacheBustVersion %> ></script>

要求JS:

在 Javascript 中,如果你使用的是 RequireJS,你可以在 requirejs config 部分创建一个名为 urlArgs 的变量。

urlArgs: "cacheBustVersion=v1"

这会将"&cacheBustVersion=v1"附加到通过require调用加载的每个文件中。

开发过程中需要JS:

urlArgs: "cacheBustVersion=" Date.now()

这将确保不缓存通过requireJS加载的所有文件。

RequireJS Documentation for urlArgs