谷歌浏览器CSS不更新,除非清除缓存

63

我正在尝试在本地服务器上工作,但每次想要看到css规则的更改时,都需要清除缓存。

有没有方法可以控制Google Chrome的缓存?

10个回答

118

1
这是我唯一能看到@import导入的CSS文件中更改的方法。 - ThomasPeeters
4
谢谢!这件事已经让我疯狂了好几个月! - MTAdmin
2
如果我在实时服务器上推送CSS更改,则在刷新缓存之前不会显示更改,如何解决此问题?我的意思是公共用户不知道更改。 - Irfan Ahmed
1
当我经历这种烦恼时,最奇怪的事情发生了...... 我对CSS文件所做的一些边距、填充和间距更改在刷新页面后实际上可以验证,但并非所有更改都生效。按照这里所述的设置进行更改正是我所需要的。非常感谢! - Brien Foss
3
仅供参考,它是位于右上角的复选框(在网络部分下方)。 - Walty Yeung
显示剩余2条评论

51

CTRL+F5:通过清除Google Chrome缓存来刷新页面。


2
在Mac上,CMD-SHFT-R - Gerrit B

11

按照这里的解决方案,帮助我重新加载CSS:https://wpreset.com/force-reload-cached-css/

不要请求文件,而是执行以下操作:

<link rel="stylesheet" href="~/css/variabledocument.css" type="text/css" />

通过在文件末尾添加参数(参数名称并不重要)获取请求ID:

<link rel="stylesheet" href="~/css/variabledocument.css?refreshcss=1" type="text/css" />

这将请求新的CSS文件。每当您更改CSS文件时,只需更改参数名称、值或两者,服务器就会再次请求它。

当您无法控制客户端浏览器并且不需要他们采取任何行动时,这非常有用。


简单而有效。最重要的是,它具有类似于未来更新的“版本控制”方法。简单的CSS文件更新竟然让我头疼不已! - Anthony Griggs
部署后出现问题。 这种方法是一个不错的解决方案,我可以将其集中在我的基础网页类中,适用于所有文件。例如,在 DLL 的构建日期后添加,这样它们只会在重新编译和部署应用程序时更改。 <link rel="stylesheet" href="~/css/variabledocument.css?BD=20201209094326" type="text/css" /> 对于具有相同问题的脚本文件也适用。 - DarrenMB

10
  1. 打开开发者工具,然后点击右上角的图标。

Google Chrome 菜单

  1. 在设置-->偏好设置中向下滚动以找到“禁用缓存(DevTools 打开时)”,然后点击方框选择该选项。

输入图像说明

如果您仍然遇到问题,并且页面在其他浏览器上可用,则简单的解决方法可能是卸载 Google Chrome 并重新安装最新版本。我也遇到了这个问题,这是最好的解决方法,而不是为了找到复杂的解决方案或已过时的帖子而头痛。重新安装 Chrome 后,请重复以上步骤以禁用缓存。


2
2017年,这实际上帮助我找到了这个设置。 - Anupam

8
您可以选择以下任何一种选项来清除缓存:-
  1. 安装 Chrome 扩展程序,如 Clear Cache,通过单击图标来清除缓存。
  2. 使用隐身模式并在其中浏览您的网站。隐身模式不会完全禁用缓存。完全禁用缓存可能会减慢您的浏览体验。
  3. 使用 Chrome 的功能,如硬刷新(清除缓存和强制重新加载)。阅读此 stackoverflow 帖子
  4. 正如 @Vitaly 提到的那样,使用开发者工具设置完全禁用缓存。
选择适合您的选项 :)

2

更多工具 > 开发者工具
然后在浏览器上右击刷新按钮。
你会得到三个选项。选择“清空缓存并强制刷新”。

这只会影响当前活动的标签页。


1
要控制Google Chrome缓存,可以执行以下步骤:
  1. 在DevTools打开时禁用缓存
  2. 关闭Chrome浏览器
  3. 使用清理软件(如CC Cleaner)清除缓存
  4. 打开Chrome浏览器

完全没有帮助... :( - Just Me

1

在Chrome 61.0.3163.100上,按下Shift-F5重新加载页面对我有用。


1

针对 JGallardo 在上述回答中的解释,以下是2022年在Chrome版本100.0.4896.88下,如何在打开DevTools时禁用缓存的设置:

enter image description here

enter image description here


0

我喜欢SylvainB2347的解决方案,通过在include语句中添加一些参数来实现。这确实使Chrome重新加载资源,因为它认为资源已经发生了改变。
我只是想稍微优化一下这个解决方案,使其自动化但不破坏缓存原则。

我的解决方案是使用PHP函数filemtime(filename),它返回最后一次内容修改的时间戳。我将其用作:

<link rel="stylesheet" href="/index.css?foo=<?php echo filemtime("index.css"); ?>">

这将在HTML中生成以下内容:

<link rel="stylesheet" href="/index.css?foo=1673508035">

当我修改 index.css 时,时间戳会改变。这样,浏览器只有在自上次访问以来被修改后才会强制重新加载资源。而且我不必手动重写任何内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接