gpt4 book ai didi

javascript - 在开发 MVC View 时强制浏览器刷新 javascript 代码?

转载 作者:数据小太阳 更新时间:2023-10-29 04:22:04 24 4
gpt4 key购买 nike

非常直截了当,我正在开发一个 MVC5 应用程序并注意到(最近)我的浏览器似乎正在缓存我在 @section Scripts { } 中的 View 中的 JavaScript 代码。

目前我正在使用 Chrome 进行开发,我尝试了 CTRL+F5CTRL+SHFT+R 重新加载页面,但是 alert() 我在 javascript 代码中取消注释,但仍按注释呈现。我还尝试通过隐身模式以及其他浏览器(Firefox、IE)访问我的本地主机,并且我得到了相同的行为。这是我的 /Home/Index.cshtml View ,它是应用程序启动时加载的默认 View 。我还尝试在页面中添加一些额外的 HTML 文本,但新代码再次没有生效/显示。

我当前的 Chrome 版本是 版本 41.0.2272.118 m 如果有人知道可能会发生什么?


更新:

我在 Chrome 的开发者工具 => 常规设置下检查了 [X] 禁用缓存(当 DevTools 打开时) 然后重复(当 DevTools 仍然打开时)尝试 CTRL +SHFT+RCTRL+F5 的结果与之前相同,但我的更改未生效。

更新 2:

在打开 DevTools 的情况下,我还按住了刷新按钮并尝试了正常/硬/和清空缓存和硬重新加载选项,结果都相同。为了简化测试,我在下面添加了一个警报,以便在页面加载后立即显示(目前没有警报出现):

$(document).ready(function () {
alert("Test");
// Other Code/Functions -- No Error showing in Console
});

最佳答案

如果您使用 Bundling from MVC ,您有两个选项可以禁用缓存:

  1. 使用BundleTable.EnableOptimizations .这指示捆绑即使在调试时也能缩小和优化您的 bundle 。它根据脚本的内容在此过程中生成一个哈希值,因此您的客户浏览器可以长时间缓存此文件。下次您的文件更改时,它将生成一个完全不同的哈希值,以便您的客户可以看到您的更改。缺点是您的脚本将变得不可读并且您将无法调试它,因此这可能不是您的最佳选择。
  2. 使用System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("url", true)要解析脚本的 URL,第二个参数 ( true ) 是 requiring与 URL 一起生成的散列,从而防止在更改文件时从浏览器缓存。这与第一个选项中生成的哈希完全相同,但没有缩小。

我创建了一个小演示,展示了第二个选项可以防止缓存发生,诀窍是在不缩小脚本的情况下获取从脚本内容生成的哈希值。

我创建了一个名为 myscript.js 的脚本文件内容如下:

$(document).ready(function () {
alert('a');
});

然后我将其添加到我的 BundleConfig.cs :

// PLEASE NOTE this is **NOT** a ScriptBundle
bundles.Add(new Bundle("~/bundles/myscripts").Include(
"~/Scripts/myscript*"));

如果你添加一个ScriptBundle ,你会再次得到一个缩小的响应,因为 ScriptBundle只是一个Bundle使用 JsMinify转换(source)。这就是为什么我们只使用 Bundle .

现在您只需使用此方法添加您的脚本即可使用哈希附加项解析脚本 URL。您可以使用 Script.Render

@Scripts.Render(System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/myscripts", true))

或者 script标签:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/myscripts", true)"></script>

任何一种方式都会生成一个带有散列的 URL 以防止缓存:

enter image description here

编辑文件后:

enter image description here

关于javascript - 在开发 MVC View 时强制浏览器刷新 javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29517467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com