在 Visual Studio 中调试时如何强制 Chrome 浏览器重新加载 .css 文件?

Posted

技术标签:

【中文标题】在 Visual Studio 中调试时如何强制 Chrome 浏览器重新加载 .css 文件?【英文标题】:How to force Chrome browser to reload .css file while debugging in Visual Studio? 【发布时间】:2013-03-11 20:09:26 【问题描述】:

我目前正在 Visual Studio 2012 中编辑一个 .css 文件(在调试模式下)。我使用 Chrome 作为我的浏览器。当我在 Visual Studio 中更改我的应用程序的 .css 文件并保存时,刷新页面将不会加载我的 .css 文件中的更新更改。我认为 .css 文件仍在缓存中。

我试过了:

    CTRL / F5 在 Visual Studio 2012 中, 转到项目属性,Web 选项卡 在 Start Action 部分中选择 Start External Program 粘贴或浏览到 Google Chrome 的路径(我的是 C:\Users\xxx\AppData\Local\Google\Chrome\Application\chrome.exe) 在命令行参数框中输入 -incognito 使用Chrome开发者工具,点击“齿轮”图标,勾选“禁用缓存”。

除非我手动停止调试(关闭 Chrome),然后重新启动应用程序(在调试中),否则似乎没有任何效果。

有没有办法强制 Chrome 总是重新加载所有 css 更改并重新加载 .css 文件?

更新: 1. 我的 .aspx 文件中的内联样式更改在我刷新时被拾取。但是 .css 文件中的更改不会。 2. 它是一个 ASP.NET MVC4 应用程序,所以我单击一个超链接,它会执行 GET。这样做,我没有看到对样式表的新请求。但是点击 F5,.css 文件被重新加载,状态码(在网络选项卡上)为 200。

【问题讨论】:

f12 -> 网络 -> 右键 -> 清除浏览器缓存(我不喜欢,所以我用 firefox 和 firebug) 我也试过了。它似乎不起作用。 您是否尝试在所有卑微的右键单击和单击后刷新它? 是的。我还对我的 .aspx 文件进行了更改。它获取了更改和内联 css 更改,而不是 .css 文件中的更改。 在同一个网络选项卡上,您可能会看到 .css 文件的条目 - 我不知道 asp,所以我不能确定,但​​在我的 python 烧瓶开发服务器缓存条目上状态码是 304,而重新下载的文件有 200。检查您的状态码并请求时间,看看它是否是服务器端的问题。 【参考方案1】:

强制 chrome 重新加载 css 和 js:

Windows 选项 1:CTRL + SHIFT + R Windows 选项 2:SHIFT + F5

OS X: + SHIFT + R

如 @PaulSlocum 在 cmets 中所述已更新(许多已确认)


原答案:

Chrome 改变了行为。 Ctrl + R 就可以了。

在 OS X 上: + R

如果您在重新加载 css/js 文件时遇到问题,请打开检查器 (CTRL + SHIFT + C) 之前 做重载。

【讨论】:

在这里我像疯了一样按了CTRL+F5...谢谢。 另一个尝试的技巧:code-pal.com/quick-tip-clear-cache-hard-refresh-on-chrome @duyn9uyen 好点!看起来他们正在再次改变行为。这是添加到 chrome windows 版本的,在 mac 上尚不可用。 Ctrl + R 也适用于 Firefox。感谢您将我从 Random Url 和其他事情中解脱出来。 CTRL+R 对我不起作用,但 CTRL+SHIFT+R 可以【参考方案2】:

还有更复杂的解决方案,但一个非常简单的解决方案就是在您的 CSS 包含中添加一个随机查询字符串。

src="/css/styles.css?v=random number/string"

如果您使用 php 或其他服务器端语言,您可以使用 time() 自动执行此操作。所以应该是styles.css?v=<?=time();?>

这样,查询字符串每次都是新的。就像我说的,有更复杂的解决方案更动态,但在测试目的中,这种方法是***的(IMO)。

【讨论】:

只是不要在生产环境中使用它,否则您将失去 css 的缓存功能。这是一件好事。 如果您使用的是单页应用程序,由于版本已更改,您需要告诉应用程序重新加载 CSS 怎么办? @NathanC.Tresch 您在版本更改时更改版本,而不是执行每次更改的随机/时间字符串。最好的方法是使用 css 文件本身的校验和。 你能为初学者澄清这个答案吗?您究竟会如何“只添加一个随机查询字符串”?初学者也希望能够看到他们工作中的变化,而我们大多数人都不知道这意味着什么,也不知道如何寻找答案。 @randy 我给出了一个使用 php 的示例,在该示例中,您将当前时间戳呈现为查询参数。您可以研究如何使用后端使用的任何语言来做类似的事情。你也可以通过 grunt/gulp 构建步骤来做到这一点,如果你可以使用的话。【参考方案3】:

[阅读下面的更新]

我发现最简单的方法是在 Chrome DevTools 设置中。 单击 DevTools 右上角的齿轮图标(或 3 个垂直点,在较新的版本中)以打开“设置”对话框。 在那里,勾选框:“禁用缓存(当 DevTools 打开时)”


更新:现在此设置已被移动。它可以在“网络”选项卡中找到,它是一个标有“禁用缓存”的复选框。

【讨论】:

这是最好的解决方案恕我直言:您不必乱用自己的代码来为您的 css url 提供随机值。 优秀的答案!...像魅力一样工作! 我也发现这个是最好的解决方案。 这已在较新版本的 Chrome 中移动:转到“网络”选项卡并检查标题中的“禁用缓存”。 Ctrl+Shift+R 和 Shift+F5 方法对我不起作用——猜测 Chrome 最近发生了一些变化。这种方法仍然很有效。 @JasonClemens:“禁用缓存”选项位于“网络”选项卡和“设置”中。【参考方案4】:

您正在处理浏览器缓存的问题。

禁用页面本身的缓存。这不会在浏览器/缓存中保存页面的支持文件。

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1990 12:00:00 GMT" />

此代码您需要/需要插入到您正在调试的页面的head 标记中,或者您的站点的master pagehead 标记中

这将不允许浏览器缓存文件,最终文件不会存储在浏览器临时文件中,所以没有缓存,所以不需要重新加载:)

我相信这会做:)

【讨论】:

这应该是公认的答案。 @anson 的解决方案对我来说不起作用。【参考方案5】:

在我的情况下,在 Chrome DevTools 设置中,只设置“禁用缓存(当 DevTools 打开时)”不起作用,它需要检查“启用 CSS 源映射”和“自动重新加载生成的 CSS”,它们是列在源组中,以消除此缓存问题。

【讨论】:

【参考方案6】:

SHIFT+F5

它适用于我的 Chrome 版本 54。

【讨论】:

谢谢。尽管 ctrl-r 是该线程上的流行答案,但只有 shift-f5 对我有用(Chromium 55)。【参考方案7】:

我在这里遇到了同样的问题!但我敢肯定,我的分辨率比上面所有的例子都好,就这样做吧,

    按 F12 调出 Chrome 开发者控制台 右键单击浏览器顶部的重新加载按钮,然后选择“清空缓存和硬重新加载”。

就是这样!

【讨论】:

改变生活!【参考方案8】:

在 macOS 中,我可以强制 Chrome 重新加载 CSS 文件

+ SHIFT + R

在 cmets here 中发现了这个答案,但它值得更多曝光。

【讨论】:

【参考方案9】:

我使用的是 Edge 版本 81.0.416.64(官方构建)(64 位),它基于 Chromium 开源项目。

F12 进入开发工具。 单击网络选项卡 勾选禁用缓存

【讨论】:

【参考方案10】:

当您重新加载页面 (Command + R) 时,当前版本的 Chrome (55.x) 不会重新加载所有资源 - 这对于调试 .css 文件没有用。

如果您只想调试 .html、.php、.etc 文件,Command + R 可以正常工作,并且速度更快,因为可以使用本地/缓存资源(.css、.js)。 每次调试迭代手动删除浏览器缓存并不方便。

在 Mac 上强制重新加载 .css 文件的程序(键盘快捷键/Chrome): Command + Shift + R

【讨论】:

【参考方案11】:

我知道这是一个老问题,但如果有人仍在寻找如何重新加载单个外部 css/js 文件,那么现在 Chrome 中最简单的方法是:

    转到 DevTools 中的 Network 选项卡 右击资源并选择Replay XHR重复请求

确保选择了禁用缓存选项以强制重新加载。

【讨论】:

【参考方案12】:

对于 macOS Chrome:

    打开开发者工具cmd+alt+i 点击开发者工具右上角的三个点 点击设置 向下滚动到Network 启用Disable cache (while DevTools is open) 见截图:

【讨论】:

【参考方案13】:

为什么需要刷新整个页面?只需刷新css文件而不重新加载页面。例如,当您必须等待来自 DB 的长时间响应时,它非常有用。从 DB 获取数据并填充页面后,编辑您的 css 文件并在 Chrome(或 Firefox)中重新加载它们。为此,您需要安装CSS Reloader extension。 Firefox 版本也可用。

【讨论】:

【参考方案14】:

您可以将此脚本复制粘贴到 Chrome 控制台中,它会强制您的 CSS 脚本每 3 秒重新加载一次。有时我发现它在改进 CSS 样式时很有用。

var nodes = document.querySelectorAll('link');
[].forEach.call(nodes, function (node) 
    node.href += '?___ref=0';
);
var i = 0;
setInterval(function () 
    i++;

    [].forEach.call(nodes, function (node) 
        node.href = node.href.replace(/\?\_\_\_ref=[0-9]+/, '?___ref=' + i);
    );
    console.log('refreshed: ' + i);
,3000);

【讨论】:

【参考方案15】:

我通过这个简单的技巧解决了。

<script type="text/javascript">
  var style = 'assets/css/style.css?'+Math.random();;
</script>

<script type="text/javascript">
  document.write('<link href="'+style+'" rel="stylesheet">');
</script>

【讨论】:

【参考方案16】:

仍然是一个问题。

使用“..css?something=random-value”之类的参数不会改变我的客户支持体验。只有名称更改有效。

对文件重命名的另一种看法。我在 IIS 中使用 URL 重写。有时 Helicon 的 Isapi 重写。

添加新规则。

+ Name: lame-chrome-fix.
+ Pattern: styles/(\w+)_(\d+)
+ Rewrite URL: /R:1.css

注意:我保留使用小写来将名称与随机数分开。可以是别的什么。

例子:

<link href="/styles/template_<% 
Response.Write( System.DateTime.UtcNow.ToString("ddmmyyhhmmss")); %>" 
type="text/css" />

(没有样式文件夹,它只是模式的名称部分)

输出代码为:

<link href="/styles/template_285316115328" 
rel="stylesheet" type="text/css">

重定向为:

(R:1 = 模板)

/template.css

只有解释很长。

【讨论】:

【参考方案17】:

一种选择是将您的工作目录添加到您的 Chrome“工作区”,这允许 Chrome 将本地文件映射到页面上的文件。然后它会检测本地文件的变化,并实时更新页面。

这可以从 Devtools 的“Sources”选项卡中完成:

单击文件浏览器侧边栏中的“文件系统”选项卡,然后单击+加号按钮以“将文件夹添加到工作区”-屏幕顶部将提示您允许或拒绝本地文件访问:

一旦允许,该文件夹将出现在左侧的“文件系统”选项卡中。 Chrome 现在将尝试将文件系统选项卡中的每个文件与页面中的文件相关联。有时您需要重新加载页面一次才能正常运行。

完成此操作后,Chrome 应该可以轻松获取本地更改,实际上在许多情况下您甚至不需要重新加载即可获取更改,并且您可以直接从 Devtools 对本地文件进行编辑(其中对 CSS 非常有用,当您切换样式选项卡中的复选框时,它甚至会删除 CSS 行)。

More information on Workspaces in Chrome.

【讨论】:

【参考方案18】:

刚刚遇到一个问题,一个运行 Chrome(在 Mac 上)的人突然停止加载 CSS 文件。 CMD + R 根本不起作用。我不喜欢上面强制在生产系统上永久重新加载的建议。

有效的是在 HTML 文件中更改 CSS 文件的名称(当然还有重命名 CSS 文件)。这迫使 Chrome 去获取最新的 CSS 文件。

【讨论】:

【参考方案19】:

如果您使用的是 Sublime Text 3,则使用构建系统打开文件会打开最新版本,并提供通过 [CTRL + B] 加载它的便捷方式 要设置在 chrome 中打开文件的构建系统:

    转到“工具”

    将鼠标悬停在“构建系统”上。在弹出的列表底部,点击“New Build System...”

    在新的构建系统文件中输入:

    "cmd": [ "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "$file"]
    

**假设上述第一组引号中的路径是您计算机上chrome所在的路径,如果不是简单地找到chrome的位置并将第一组引号中的路径替换为计算机上 chrome 的路径。

【讨论】:

【参考方案20】:

实现目标的最简单方法是在 chrome 中打开一个新的隐身窗口Firefox 中的私有窗口,默认情况下,不会缓存。 p>

您可以将其用于开发目的,这样您就不必在项目中注入一些随机缓存阻止代码。

如果您使用的是 IE,那么请上帝帮助您!

【讨论】:

【参考方案21】:

Ctrl + F5

Shift + F5

两者都有效

【讨论】:

【参考方案22】:

Safari 11.0 macOS SIERRA 10.12.6 上最简单的方法: Reload Page From Origin,你可以使用帮助来查找它在菜单中的位置,也可以使用快捷键 option(alt) + command + R。

【讨论】:

【参考方案23】:

Chrome/firefox/safari/IE 将通过这些快捷方式重新加载整个页面

Ctrl + R (OR) Ctrl kbd> + F5

希望对你有帮助!

【讨论】:

【参考方案24】:

如果您使用 SiteGround 作为托管公司,而其他解决方案均无效,请尝试以下操作:

在 cPanel 中,转到“站点改进工具”并单击“SuperCacher”。在接下来的页面中,点击“刷新缓存”按钮。

【讨论】:

这个答案与 Visual Studio 和 Chrome 浏览器无关。此外,这个问题是在 4 前提出的,并且已经有了一个公认的解决方案。请尽量避免通过提供答案来将问题“颠倒”到顶部,除非该问题尚未标记为已解决,或者您找到了针对该问题的新的和改进的解决方案。查看writing great answers 上的文档,了解有关如何让您的答案发挥作用的一些提示:) 嗨黑曜石。我很抱歉。这是我第一次在这里发帖。我长期努力地寻找解决这个问题的方法。接受的答案对我不起作用。当我确实找到了解决方案(通过我自己的研究)时,我想通过帮助遇到这个问题的任何其他人来“付出代价”——即使它已经四岁了。我不知道为什么我在这里的行为会引起一记耳光,因为这对我来说似乎是合法的。尽管如此,我一定会在未来小心谨慎(真的 - 我并不是以一种刻薄的方式)。谢谢-唐。

以上是关于在 Visual Studio 中调试时如何强制 Chrome 浏览器重新加载 .css 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 中的 DLL 响应太慢

调试时如何让 Visual Studio 保持在一个线程上?

在Visual Studio中调试时,如何检查有关进程令牌的详细信息?

如何在 Visual Studio 中调试单行函数?

译如何在 Visual Studio 中调试异步代码

如何让 Visual Studio 在调试时使用嵌入式源代码?