如何在不重新启动 Web 应用程序的情况下以编程方式使 JavaScript 和 CSS 包无效或刷新?
Posted
技术标签:
【中文标题】如何在不重新启动 Web 应用程序的情况下以编程方式使 JavaScript 和 CSS 包无效或刷新?【英文标题】:How to programmatically invalidate or refresh JavaScript and CSS bundles without restarting the web application? 【发布时间】:2015-02-27 22:58:01 【问题描述】:我了解,当为 javascript 和 CSS 使用包时,Web 应用程序正在缓存包并为其使用缓存键,如下所示:
<script src="/bundles/sampleJs?v=h-HGvCLcx-0T1kG3DBKIVBtGxEhtfpONQl5b_7BQuSo1"></script>
如何以编程方式刷新缓存的包(或仅一个包)?
例如,如果我必须上传新的 CSS 更新 - 我想更新捆绑包而无需重新启动整个 Web 应用程序...
【问题讨论】:
这在很大程度上取决于您使用的 Web 框架;请添加标签(因为这不是 JavaScript 或 CSS 的问题,也不是 Bundler 的责任)。 【参考方案1】:您可以通过以下两种方式解决此问题:
ASP.NET:
如果 html 页面是在服务器端生成的,比如说 ASP.NET,我会简单地在 Global.asax 中定义一个静态全局,它将附加到所有资源。
<script src="/bundles/sampleJs?cacheBustVersion=" + <%= @cacheBustVersion %> ></script>
RequireJS:
在 Javascript 中,如果您使用的是 RequireJS,您可以在您的 requirejs 配置部分创建一个名为 urlArgs 的变量。
urlArgs: "cacheBustVersion=v1"
这会将“&cacheBustVersion=v1”附加到通过 require 调用加载的每个文件。
开发过程中需要JS:
urlArgs: "cacheBustVersion=" Date.now()
这将确保所有通过 requireJS 加载的文件都不会被缓存。
RequireJS Documentation for urlArgs
【讨论】:
嗨。我实际上想利用缓存的捆绑包,只是我在寻找一种方法,以某种方式导致内置捆绑包机制在更新 CSS 文件时重新执行捆绑和缩小捆绑文件......以上是关于如何在不重新启动 Web 应用程序的情况下以编程方式使 JavaScript 和 CSS 包无效或刷新?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不重新加载页面的情况下从 FF Web 扩展内容脚本更改 3rd 方网站上的 Angular 应用程序路由/URL
如何在不使用命令的情况下以编程方式关闭/重启 linux 机器(运行时)
在不打开联系人应用程序的情况下以编程方式将 vcf 保存到 Android 中的联系人
如何在不使用 UINavigationController 的情况下以编程方式进入 rootViewController