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


151

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

我努力了:

  1. CTRL / F5
  2. 在Visual Studio 2012中,转到项目属性的“ Web”选项卡,在“开始操作”部分中选择“启动外部程序”,粘贴或浏览到Google Chrome的路径(我的路径为C:\ Users \ xxx \ AppData \ Local \ Google \ Chrome \ Application \ chrome.exe)在命令行参数框中放入-incognito
  3. 使用Chrome开发人员工具,单击“齿轮”图标,选中“禁用缓存”。

除非我手动停止调试(关闭Chrome),重新启动应用程序(在调试中),否则一切似乎都无法正常进行。

有什么方法可以强制Chrome始终重新加载所有CSS更改并重新加载.css文件?

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


4
f12->网络->右键单击->清除浏览器缓存(我不喜欢,所以我将firefox和firebug一起使用)
thkang 2013年

我也尝试过。它似乎不起作用。
duyn9uyen

您是否尝试过在所有常规右键单击和单击之后刷新它?
thkang

是。我还对.aspx文件进行了更改。它获取了更改和内联CSS更改,但未更改.css文件中的更改。
duyn9uyen

在同一网络标签上,您可能会看到.css文件的条目-我不知道asp,所以无法确定,但是在我的python flask开发服务器上,缓存的条目的状态码是304,而重新下载的文件有200 。检查您的状态码并请求时间以查看是否是服务器端问题。
thkang

Answers:


148

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

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

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

这样,查询字符串将每次都是新的。就像我说的那样,有许多更复杂的解决方案具有更高的动态性,但是在测试目的中,此方法是最高(IMO)。


17
只是不要在生产环境中使用它,否则您将失去CSS的缓存功能。这是一件好事。
Bart Calixto

3
如果您使用的是单页应用程序,并且由于版本已更改而需要告诉应用程序重新加载CSS,该怎么办?
内森·T·雷施

10
@ NathanC.Tresch您在版本更改时更改版本,而不是执行每次更改的随机/时间字符串。最好的方法是使用css文件本身的校验和。
Bart Calixto

您能为初学者澄清这个答案吗?您究竟将如何“仅添加随机查询字符串”?初学者也希望能够看到他们工作中的变化,而我们大多数人都不知道这意味着什么或如何寻找答案。
兰迪

@randy我举了一个使用php的示例,其中您将当前时间戳渲染为查询参数。您可以研究如何使用后端使用的任何语言来执行类似的操作。如果可以使用,您也可以通过咕gr咕gu的构建步骤来完成此操作。
Anson

207

要强制Chrome重新加载CSS和JS:

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

OS X:+ SHIFT+R

如@PaulSlocum在评论中所述(已确认)


原始答案:

Chrome更改了行为。Ctrl+ R会做到的。

在OS X上:+R

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


26
在这里,我像疯了一样按CTRL + F5 ...谢谢。
Alix Axel


3
@ duyn9uyen好点!看起来他们再次改变了行为。这已添加到chrome Windows版本,在Mac上尚不可用。
Bart Calixto

4
Ctrl + R也可以在Firefox中使用。感谢您使我摆脱了随机网址和其他问题。
Zeeshanef

30
CTRL + R不适用于我,但CTRL + SHIFT + R可以
Paul Slocum

139

[阅读下面的更新]

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


更新:现在此设置已被移动。可以在“网络”标签中找到,它是一个标记为“禁用缓存”的复选框。 在此处输入图片说明


15
恕我直言,这是最好的解决方案:您不必弄乱自己的代码即可为CSS网址提供随机值。
纪尧姆

2
出色的答案!...像魅力一样运作!
阿尼

1
我还发现这是最好的解决方案。
黄乔

3
这已在较新版本的Chrome中移动:转到“网络”标签,然后选中标题中的“禁用缓存”。
杰森·克莱门斯

Ctrl + Shift + R和Shift + F5方法对我不起作用-猜测最近在Chrome中有所更改。这种方法仍然有效。@JasonClemens:“禁用高速缓存”选项位于“网络”选项卡和“设置”中。
阿莫斯·卡彭特

11

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

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

<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要调试的页面的head标签或的标签中 master page网站的

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

我相信这会做的:)


1
这应该是公认的答案。对我来说,@ anson的解决方案不起作用。
PierrickMartellière

8

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


6

SHIFT+F5

它适用于Chrome 54版。


谢谢。尽管ctrl-r是该线程上的流行答案,但只有shift-f5对我有用(Chromium 55)。
user2662680

5

我在这里遇到了同样的问题!但我可以肯定,我的分辨率要比以上所有示例都要好,只要做到这一点,

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

就是这样!


4

借助macOS,我可以通过以下方式强制Chrome重新加载CSS文件:

+ SHIFT+R

这里的评论中发现了这个答案,但值得更多的关注。


3

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

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

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



2

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

  1. 转到网络标签 DevTools中的“
  2. 右键单击资源,然后选择“ 重播XHR”以重复请求

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


2

对于macOS Chrome:

  1. 开放式开发工具cmd+ alt+i
  2. 单击开发人员工具右上角的三个点
  3. 点击设置
  4. 向下滚动到 Network
  5. 启用Disable cache (while DevTools is open)请参阅屏幕截图: 在此处输入图片说明

1

为什么需要刷新整个页面?仅刷新css文件而无需重新加载页面。例如,当您必须等待数据库的长时间响应时,这将非常有用。从DB获取数据并填充页面后,请编辑CSS文件,然后将其重新加载到Chrome(或Firefox)中。为此,您需要安装CSS Reloader extension。也提供Firefox版本。


1

您可以将该脚本复制粘贴到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);

1

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

<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>

1

仍然是一个问题。

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

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

添加新规则。

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

注意:我保留使用小写字母来将名称与随机数分开。可能还有其他。

例:

<link href="https://stackoverflow.com/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

只有解释很长。


0

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

起作用的是在HTML文件中更改CSS文件的名称(当然还要重命名CSS文件)。这迫使Chrome浏览器获取最新的CSS文件。


0

如果您正在使用Sublime Text 3,则使用构建系统打开文件会打开最新版本,并提供一种方便的方法来通过[CTRL + B]加载该文件。要设置构建系统以chrome打开文件,请执行以下操作:

  1. 转到“工具”

  2. 将鼠标悬停在“构建系统”上。在弹出的列表的底部,单击“新建系统...”。

  3. 在新的构建系统文件中,键入:

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

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


0

实现目标的最简单方法是在Chrome中打开新的隐身窗口在Firefox中打开私密窗口默认情况下,它将不缓存。

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

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



0

在Safari 11.0 macOS SIERRA 10.12.6上最简单的方法:从原点重新加载页面,您可以使用帮助来查找菜单在菜单中的位置,或者可以使用快捷键(alt)+ command +R。


-1

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

Ctrl+ R (或)Ctrl+F5

希望对您有帮助!


-1

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

从cPanel中,转到“站点改进工具”,然后单击“ SuperCacher”。在下一页上,单击“刷新缓存”按钮。


此答案与Visual Studio或Chrome浏览器无关。此外,这个问题被问4 多年的以前,已经有了一个接受的解决方案。除非尚未将问题标记为已解决,或者您找到了针对此问题的新的改进解决方案,否则请尝试通过向其提供答案来避免“凸显”问题。查阅有关撰写出色答案的文档,以获取有关如何使您的答案有价值的一些技巧:)
黑曜石年龄

嗨,黑曜石。我很抱歉。这是我第一次在这里发布。我花了很长时间寻找这个问题的解决方案。接受的答案对我不起作用。当我确实找到了解决方案时(通过我自己的研究),我想通过帮助遇到此问题的任何其他人(即使它已经四岁了)来“偿还”。我不确定为什么我的动作在手腕上会被打一巴掌,因为在我看来这是合法的。不过,我一定会在将来小心一点(的确-我不是用狡猾的方式表示)。谢谢-唐
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.