ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Chrome for Android 中强制重新加载

在桌面版 Chrome 中,我在开发工具中有选项可以在打开开发工具时完全禁用缓存,并且我可以选择在长按重新加载按钮时手动执行硬重新加载(打开开发工具)。

适用于 Android 的 Chrome 是否有任何此类技术?我没有找到任何设置。当我想强制浏览器下载一些 javascript 或 css 文件而不是在开发时使用缓存文件时,我该怎么办?

刚回来扩展(曾经是)一个稳定的网络应用程序,并发现这种情况正在发生。最新的状态数据存储在一个带有 cache-buster url 后缀的 .js 文件中。这不再适用于 Windows、ChromeOS 或 Android 上的 Chrome。
这些天来,似乎一个简单的刷新(单击圆圈 w 箭头)可以检测到任何更改。没有技巧。 ...如果我错了,请告诉我。

C
Community

我根据 MDN(和 this 类似问题)使用 window.location.reload(true),它强制页面从服务器重新加载。

您可以通过在地址栏中键入 javascript:location.reload(true) 在浏览器中执行此代码。


只需将其输入到地址栏,并在代码前面加上 javascript:
实际上,您应该能够避免 window. 部分。 javascript:location.reload(true) 应该可以解决问题。
在 chrome v55.0.2883.91/android5.1.1 上对我不起作用
它不适用于我的 Android 7.1.1 上的 v56.0.2924.87。为什么你可以像以前一样点击刷新并让浏览器重新下载?尝试开发时这样的烦恼。
我打开一个隐身窗口
M
Michael

以隐身模式查看页面将禁用缓存。这是我可以强制刷新样式表而不通过设置手动清除缓存的唯一方法。


@Kev 不适合我。
是的,这个适用于我的 Android 6.0.1 和 Chrome 59。
这比公认的答案更好,至少在 Android 7.1.2 和 Chrome 61 上。缓存在某种程度上非常激进。即使清空该域的缓存文件也不适合我。
我更经常使用它,如果它不适合你,可能缓存在服务器上而不是浏览器上。
它只会在第一次隐身模式下清除缓存。之后出现同样的问题
A
Alec

还有一个选项:

菜单设置隐私清除浏览数据检查“缓存”并按“清除”

然后重新加载页面。


现在它已更改为 Clear Browsing Data,您可以在其中使用复选框选中 clear cache
不,然后,杀死 Chrome,重新启动 Chrome,然后重新加载页面。是的,只是变得更糟了。
更新:即使杀死 Chrome 也不再起作用。我不知道“缓存的图像和文件”选项到底在清除什么......它仍然保留缓存的 CSS 文件。这越来越荒谬了!
更新:见 heidgert 的回答。如果在 Chrome 设置中打开“数据保护程序”,清除缓存可能仍会从 Google 的服务器加载“缓存”结果。
这将清除所有站点的缓存,而不仅仅是已检查的站点。
I
Ishmaeel

您可以使用应用程序菜单(地址栏右侧)中的“请求桌面站点”选项,这将强制页面重新加载。

只需点击它,等待刷新,然后取消选择它。


确认在 Chrome 上工作。我在浏览时几乎错过了这个答案。删除了关于 Firefox 的评论以帮助下一个人。我希望这不会与作者的意图相冲突。
当您遇到卡住的 css 或 js 文件时,这是迄今为止开发的最佳答案。我发现通常刷新工作正常,但有时由于某些莫名其妙的原因,js 或 css 文件卡住了,这是我发现的唯一解开它的方法。希望我能给出超过 1 个赞,哈哈,因为它很容易解决。
这曾经在一段时间前有效,但在 2017 年 12 月的任何最新版本的 chrome 上都不再有效。
这适用于三星 Android 5.1.1 上的 Chrome 2018 65.0.3325.109; SM-T900 构建/LMy47X。它具有不破坏缓存数据的额外好处(例如 localStorage 值)。
2019 年 4 月无法使用。Chrome 73+ 无法使用。
A
Aakash Goel

提到这一点是因为您提到了“开发时”。

您可以通过 Chrome 桌面浏览器控制移动设备。

在您的桌面上访问 chrome://inspect/#devicesInspect 连接到您桌面的设备。在请求许可时同意。

您现在应该会在移动设备上看到当前页面的完整 Devtool 窗口。

现在,使用桌面上的硬重载快捷方式(Cmd+Shift+R)在移动设备上进行硬重载!


此评论已过时,但让我走上了正确的道路。您必须首先通过 Chrome 启用实际手机进行调试。
有关如何在 Android 手机上启用 USB 调试的详细说明,请参阅:stackoverflow.com/a/16707217/1024735。而且这个功能不仅仅是硬重新加载能力。谢谢!
对于在 Android 模拟器中进行测试,devtools 中的 Ctrl+Shift+R 非常好用且快速。没有打开和关闭任何设置等。谢谢。
y
yPhil

如何在 Chrome Mobile for android 上重置给定 URL/网站的所有数据:

1 - 打开 Chrome 菜单,然后点击“i (info)”图标

https://i.stack.imgur.com/CMrDT.jpg

- 点击“网站设置”

https://i.stack.imgur.com/7SCtK.jpg

3 - 点击垃圾桶图标

https://i.stack.imgur.com/g7H9j.jpg

就是这样,即使是该 URL 最深入的 service worker 也会死掉。


这不适用于三星 S9+ 上的 Chrome 73.0.3683.90。我已经尝试了超过 15 次,以及 javascript:location.reload(true),但它不起作用。根据黑暗之王 Guug-Ul 的说法,Android 用户似乎不能同时成为开发人员。
适用于我的 Note 8.. 但之后我必须刷新页面。
您还可以通过单击 URL 左侧的锁定图标(或不安全连接显示的任何内容)来获取此菜单。
迄今为止最好的解决方案! <3
奇迹般有效!感谢你的回答...!
h
heidgert

不要忘记确保“减少数据使用”设置已关闭,因为即使您的本地缓存已刷新,它似乎也会下载缓存数据(从 Google 服务器?)。


我认为此设置现在简称为“数据保护程序”。
L
Lucas Zamboulis

我知道这是一个老问题,但我发现接受的答案对我不起作用。

另一种解决方案是在 url 中附加一个新的 url 参数,例如 website.com?a=1website.com?a=2 等。

如果您已经有参数,当然,您可以使用 & 符号,即 website.com?q=test&a=1


这行得通。如果您只想重新加载一次,只需 ?a 就足够了。
这对于重新加载缓存的参考文件(如 CSS 或 JS)不太可行,因为您无法真正编辑主 HTML 以添加 ?a - 当然,除非您是网站主机。
S
Skippy le Grand Gourou

截至 2018 年,来自 google help center(在 Chrome 63 上测试):

点击三点菜单;选择历史记录>清除浏览数据;如果需要,选择时间段(在清单上方);取消选中除缓存图像和文件之外的所有项目;继续清除数据并确认。

正如另一个答案中提到的,隐身标签对开发也很有用。


注意步骤 3:选择时间段。这对我有用,因为我试图从 3 周前清除缓存页面。
这不是你的错,但这是一个非常糟糕的解决方案,因为它也会清除所有其他网站的浏览数据,如果你将浏览器用于开发工作以外的任何事情,这会很痛苦!
@GameKyuubi 实际上,如果您选择上一小时的数据,痛苦是有限的。但是当然这个解决方案很差,我只是引用它,因为它是官方的,它确实有效(与其他一些相反)。
这就是我的意思,这是官方解决方案的事实真是令人尴尬。
很好的解决方案,因为这为您提供了在不清除 cookie 或历史记录的情况下清除缓存数据的选项
B
Bort

我发现不需要将手机插入PC的唯一可靠方法如下:

1.强制停止Chrome应用。

这必须首先完成,并且在完成这些步骤之前您无法重新打开 Chrome。有几种方法可以强制停止。大多数家用启动器都会让您通过将手指按住 chrome 图标并选择“i”图标来访问“应用程序信息”。或者,您可以转到 Android 设置并简单地搜索“Chrome”。

进入“应用信息”后,选择“强制停止”,如下图所示:

https://i.stack.imgur.com/hkRMK.png

2.清除Chrome的缓存

从同一屏幕中选择“存储”:

https://i.stack.imgur.com/e5EtE.png

最后,选择“清除缓存”。

https://i.stack.imgur.com/4izVU.png

当您返回 Chrome 应用程序时,该页面应自行重新加载并提供非缓存版本。

此外,我还发现了一个可以轻松测试您是否已清除缓存的网站:https://refreshyourcache.com/en/cache-test/
我与它没有任何关系。请注意,该站点上提到的清除缓存的方法实际上已经过时并且不再有效。


完美,这是唯一对我有用的解决方案,无需 USB 调试。
N
Nathan Osman

我找到了一个可行的解决方案,但它很难看。

使用 USB 数据线将 Android 设备连接到您的 PC,然后在桌面上打开 Chrome。

右键单击页面上的任意位置并选择“检查”。

点击三点菜单,在“更多工具”菜单下选择“远程设备”:

在打开的面板中,选择您的设备,然后选择手机上需要刷新的标签名称旁边的“检查”按钮:

在打开的窗口中,单击“网络”选项卡并选中“禁用缓存”复选框:

在手机上重新加载页面或使用 DevTools 窗口中的重新加载按钮。

注意:如果您的手机没有出现在设备列表中:确保 USB 连接使用文件传输模式并且不是简单充电尝试重新启动 ADB 或运行 adb devices 以查看是否检测到设备


很棒的解决方案,这主要用于直接在桌面上“检查”设备的网页,您也可以清除缓存。谢谢。
这其实是最美的答案。
这是唯一对我有用的答案;感谢发帖!
G
Greg Searle

最近版本的 Chrome 缓存非常积极。甚至像“http://url?updated=datecode”这样的缓存清除技术也停止了工作。您必须每次都清除缓存或启动隐身窗口(并确保数据保护程序已关闭)。


有趣的是,我没有意识到这一点。您是否有任何消息来源支持这一说法?
这只是我在开发自己的 Javascript 应用程序时观察到的行为。我必须在我的开发 Web 服务器的 HTTP 标头中指定 CACHE-CONTROL:NO-CACHE 指令,以免因那些不会消失的错误而发疯(因为 Chrome 坚持缓存旧代码)。 Firefox 不显示此行为。
这是所有答案中唯一对我有用的想法。我有一个在 javascript 中写入 SQL 表的虚拟发布请求,以检查它是否真的刷新并且这个解决方案做得对。此外,没有添加 url 的后续站点访问现在按预期运行。编辑:它停止工作:)我认为它一定是我在这里尝试过的所有东西的组合哈哈
我为此找到的唯一有效解决方案是通过附加版本号来实际更改文件名(以及这涉及的所有复杂性)。看起来其他开发人员也采用了这个解决方案。随它吧。
佚名

远程调试允许您使用桌面开发工具:

https://developers.google.com/chrome-developer-tools/docs/remote-debugging


是的,谢谢我已经知道 - 应该提到这一点,但有时我不想插入它但仍然有这个选项
您可以像这样清除缓存:support.google.com/chrome/answer/2392709
谢谢,不刷新所有站点的整个缓存的选项会很好
当您启用网络 > 禁用缓存时,这是最可靠的选项
D
Dharman

如果只是包含文件的问题,只需在路径后添加版本(?v=12345678

<link rel="stylesheet" type="text/css" href="style.css?v=12345678" />

再次加载页面的人将看到更改。


被低估的好答案!
n
namp

诸如 Ctrl+Shift+R 之类的键盘快捷键也适用于 Android,您只需要一个能够发送这些键的键盘。我使用 Hacker's Keyboard 发送 Ctrl+Shift+R,这在我的手机上进行了硬重新加载。


这是唯一对我有用的解决方案 - 在您所在页面的地址栏上输入密钥,Samsung S20 FE + Chrome。即使手动输入 CSS 和 JS 路径并刷新,即使我可以看到我的新代码,它也不适用。在这里尝试了其他一切!请注意,新页面将隐身工作 - 但这并不总是您想要的。感谢这个另类但有效的解决方案 - 我只是想知道谷歌在 Android 上禁用它需要多长时间(比如使用 Ctrl 和功能键等)。
u
user1937747

大多数答案对我不起作用。这是 2020 年 8 月在我的 Galaxy S8 上的一个超级简单的工作:

在您的 http:.... 地址之前添加“view-source:”,如果与 html 或索引不同,则通过那里导航到更改的文件。

您将看到未更改的文件。刷新。

完毕。


这适用于 2022 年 5 月,对 css 和 js 文件独立执行相同操作。
这也适用于给我带来困难的 SVG 图像。直接访问图像 URL 并重新加载已经显示了新版本,但在页面中它不会更新,直到我尝试了这个技巧。不确定这是否适用于其他图像类型。
T
Tom Kay

编辑:此方法已在 Google Chrome 中弃用,将不再有效。

原始答案:

我能够使用 chrome://net-internals 清除缓存(包括后续的 xhr)

https://i.stack.imgur.com/3rjvzm.png

然后点击右上角的小箭头

https://i.stack.imgur.com/Q8A5Km.png

从该菜单中选择“清除缓存”。


在 Chrome 75 中,chrome://net-internals 说“net-internals 事件查看器和相关功能已被删除......”
@Bort 感谢您的提醒。看起来这种方法不再起作用了。
D
DirkTheWebPhoenix

这是另一个在其他人失败时可能会起作用的简单解决方案:

今天,当缓存问题是缓存的 CSS 文件时,一个相当简单的开发人员解决方案对我有用。简而言之:创建一个临时 html 文件副本并浏览到它以更新 CSS 缓存。

这个技巧可以刷新 CSS 文件,至少在 Android 的蓝色地球图标默认浏览器中(但很可能是它的孪生兄弟,官方 Chrome 浏览器,以及我们在“智能”手机上遇到的具有积极缓存趋势的任何其他浏览器)。

细节:

起初我尝试了一些在这里分享的相当简单的解决方案,但没有成功(例如清除特定站点的最近历史,但不是几个月和几个月)。然而,我最新的 CSS 不会在刷新后应用。即使我已经在 html 的 head 部分的 CSS 文件调用中使用了版本号技巧,它帮助我避免了过去这些讨厌的激进缓存。 (例如:link rel="stylesheet" href="style.css?v=001" 每次更改 CSS 文件时都会升级此伪版本号,例如 001、002、003、004... (应该在网站的每个 html 文件中完成))

这一次(2019 年 8 月)CSS 文件版本号更新不再足够,这里提到的一些更简单的措施也对我不起作用,或者我什至无法访问其中的一些(在借来的 Android 手机上)。

最后我尝试了一些相对简单的方法,最终解决了这个问题:

我复制了网站的 index.html 文件,给它起了一个不同的名称 (indexcopy.html),上传它,在 Android 设备上浏览到它,然后浏览回原始页面,刷新它(使用左侧的刷新按钮地址栏),瞧:这一次 index.html 的刷新终于奏效了。

说明:在刷新相关 html 页面时,最新的 CSS 文件版本现在终于在 Android 上应用了,因为当 CSS 文件从任何地方都不存在的不同名称的临时 html 页面调用时,CSS 文件的缓存副本现在已更新在浏览器历史记录中,之后我可以再次删除。激进的缓存显然忽略了 CSS URL,而是使用 HTML URL,即使它是需要在缓存中更新的 CSS 文件。


可悲的是,这是当今唯一似乎有效的方法。这确实意味着每当使用 css 时,您都需要不断更新 wordpress 中的 functions.php 以升级版本。是的,关于谷歌的另一个愚蠢的事情是,他们没有思考,现在就在微软那里。但是,是的,一个老把戏:)
M
MSS

向 url 傻瓜浏览器添加参数以加载新页面。为此我写了一个函数:

function forceReload(){
    
    function setUrlParams(url, key, value) {
        url = url.split('?');
        usp = new URLSearchParams(url[1]);
        usp.set(key, value);
        url[1] = usp.toString();
        return url.join('?');
    }
    
    window.location.href =setUrlParams(window.location.href,'_t',Date.now());
}

你只需要调用它:

forceReload();

B
Bob Warwicker

我一直在为一个不会刷新的 CSS 文件而苦苦挣扎。但是您可以在地址栏中键入 CSS 文件本身的名称并刷新它。之后就好了。 Android 8 上的 Chrome。显然,如果您涉及多个文件,那将是令人厌烦的。


P
PCcloob.Ir

在 chrome 中,只需勾选“桌面站点”,然后删除勾选!


W
WoodrowShigeru

如果这是一个选项,您可以直接访问(即 JavaScript)资源,重新加载很多次,这也会触发该资源的硬重新加载。然后您可以再次重新加载实际页面。


D
Dip Vachhani

启动 Chrome Android 应用 点击菜单以获取更多选项。从选项列表中选择设置。向下滚动并点击站点设置选项卡。在站点设置中打开数据存储选项卡。点击要删除存储的站点 URL。点击清除和重置命令按钮。刷新网站页面。


u
uingtea

有几种方法可以在移动设备上强制重新加载 chrome:

清除历史记录(见上图)使用远程调试(见上图)请求桌面站点禁用“Lite 模式”打开 .JS 或 .CSS 的 URL,然后进行正常重新加载。