每次访问网站时强制 Google Chrome 检查新的 JavaScript 文件

每次访问网站时强制 Google Chrome 检查新的 JavaScript 文件

因此,如果我进入 Internet Explorer 中的“Internet 选项”: 在此处输入图片描述

我可以调整 IE 检查更新时的设置: 在此处输入图片描述

我可以在 Google Chrome 中做类似的事情吗?现在,当我更改 JavaScript 文件并从 Visual Studio 进行调试时,Chrome 将始终使用缓存版本,而不是使用修改后的版本。为了能够使用当前版本,我必须手动清除我的临时互联网文件/缓存,这真的很烦人。

答案1

选项 1:暂时禁用缓存

  1. 打开开发者工具(按F12或菜单,更多工具,开发者工具)
  2. 打开开发者工具设置(按F1或 DevTools 菜单、设置)
  3. 在“偏好设置”窗格的网络标题下,选中“禁用缓存(当 DevTools 处于打开状态时)”

选项 2:禁用会话缓存

使用命令行开关启动 Chrome --disk-cache-size=1 --media-cache-size=1,将缓存限制为 1 个字节,从而有效地禁用缓存。

选项 3:手动强制刷新

重新加载当前页面,忽略缓存内容 :Shift+F5Ctrl++Shiftr

Chrome 键盘快捷键 - Chrome 帮助(在“网页快捷方式”下)

选项 4:额外的重新加载选项来源

打开开发人员工具后,右键单击“重新加载”按钮以显示重新加载菜单,其中包含以下内容:

  • 正常重新加载 (Ctrl+R)
  • 硬重载(Ctrl+Shift+R)
  • 清空缓存并硬重新加载

答案2

它可能与 chrome 更新不是 100% 相关,但是为了进一步发展。就像 @Dom 所说的那样,您可以在资源后添加 ?v=#。自动化该过程的一种方法是散列所述文件的内容并将其用作版本。

如果有帮助的话,我有一段关于如何在 C#(使用 Razor 实现)中实现这一点的代码片段。

帮手:

public static string HashUrl(string relativeUrl)
    {
        var server = HttpContext.Current.Server;
        if (File.Exists(server.MapPath(relativeUrl)))
        {
            byte[] hashData;
            using (var md5 = MD5.Create())
            using (var stream = File.OpenRead(server.MapPath(relativeUrl)))
                hashData = md5.ComputeHash(stream);

            return relativeUrl.Replace("~", "") + "?v=" + BitConverter.ToString(hashData).Replace("-", "");
        }
        return relativeUrl + "?v=notFound";
    }

执行:

<link rel="stylesheet" [email protected]("~/Controllers/Home/Views/Index.css") />

希望这可以帮助

编辑---有些人要求一些构建运行时间,对于 1000 个小资源,大约需要 11 毫秒。

https://en.code-bude.net/2013/08/07/md5-hashes-in-c-benchmark-and-speed-%E2%80%8B%E2%80%8Boptimization/

在此处输入图片描述 https://en.code-bude.net/wp-content/uploads/2013/08/md5_performance_benchmark_2.png

答案3

在其他情况下,这些操作可能无法实现,例如想要强制刷新您无权访问的最终用户的计算机,您可以将版本号附加到脚本名称作为查询参数,使浏览器将其识别为不同的文件. 即. example.js?v=1. 请记住您需要在每次重新加载时更改号码以强制执行。

您也可以通过本地开发来执行此操作,但开发工具方法更为高效。

答案4

如果您正在开发网站,那么您应该知道 Chrome 需要设置must-revalidate才能Cache-Control在服务器上更改文件时正确地重新获取文件。

其他答案告诉您如何按 SHIFT-F5 强制您自己的 Chrome 版本重新获取所有文件。但是,每次网站发生变化时都告诉网站的所有用户这样做是否合理?如果您设置Cache-Control为包含must-revalidate,那么 Chrome 将检查是否有任何文件已更改,然后在需要时正确下载它们。

请参阅此博客文章中的详细信息: https://agiletribe.wordpress.com/2018/01/29/caching-for-chrome/

相关内容