如何在Android上禁用Chrome浏览器的缓存?

34

如何在Android Chrome上禁用缓存?

我更改了页面内容并刷新了页面,但内容仍然是旧的。

我已经像下面这样设置了nginx配置,但没有效果。

#disable cache
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma no-cache;
add_header Expires 0;

有没有办法在不手动清除缓存的情况下获取我的最新页面?


1
你是在进行开发吗?还是要应对真实的流量? - Michael Aaron Safyan
6个回答

23

这可能不是最简单的方式,但它将百分之百地起作用,并且应该是您开发设置的一部分。

在Windows或Mac上使用Google Chrome的Web工具将允许您进行“远程调试”。

  1. 通过设置中的开发人员菜单启用Android设备上的远程调试。
  2. 使用USB将手机连接到电脑上。
  3. 打开Google Chrome并访问开发人员控制台(F12)。
  4. 点击三个点(右上角)>更多工具>远程设备。
  5. 向下滚动以选择您的移动设备,在此阶段,您应该看到您手机上所有Chrome实例都已打开。通过按检查选择您希望“强制重新加载和禁用缓存”的实例。
  6. 另一个屏幕应该出现,允许您访问网络选项卡并选择“禁用缓存”。

2
太棒了,谢谢这个提示。不幸的是,在整个过程中,您将不得不像在PC浏览器中一样始终保持窗口打开。而且手机会变得有点慢。但是,总比没有好。谢谢。 - Jay Smoke
对于那些在连接调试会话时遇到问题的人,请确保在按下F12并选择“远程设备”之后再将手机插入。这将弹出提示,在手机上接受调试会话,这是完成连接所必需的。您可以在此处阅读更多信息:https://developers.google.com/web/tools/chrome-devtools/remote-debugging/。 - user4336026
三星手机用户还应该查看此答案以获取一些额外的步骤。具体来说,您可能需要运行adb devices来启动事情。 - Michael Geary
即使在 Chrome 中勾选了“禁用缓存”,有时仍然会使用缓存! - phd_coder
在Ubuntu上的Google Chrome中,我在“更多选项”列表中就是看不到这样的选项。 - mevsme

10

目前在安卓版Chrome中没有办法禁用缓存,但可以清除缓存。

更新:现在已经有一种方法可以禁用缓存,需要连接手机并进行远程调试,请参考Dean Meehan的答案了解更多信息。
按照以下步骤清除缓存。

http://www.refreshyourcache.com/en/chrome-android/

  1. 点击菜单按钮(右上角的三个点)。
  2. 在菜单中点击设置
  3. 在菜单中点击隐私
  4. 在底部点击清除浏览数据...
  5. 从列表中选择清空缓存
  6. 确认清除浏览数据。

请从您提供的链接中复制必要的内容。一段时间后,链接可能会失效,答案将不再有效。 - Sam Protsenko
1
我不能,我的声望不够高。 - Shariq Musharaf
1
@Shariq:您可以编辑自己的帖子。请从链接中添加相关部分来扩展您的答案。如果您不这样做,您的回答很可能会被删除。 - Christian Garbin
好的,谢谢你帮助我! - Shariq Musharaf
1
重点是禁用它,这样您就不必每次都执行这些步骤。 - FluffyBeing
所以,我的最佳选择是重新加载Chrome并在隐身标签中打开localhost...因为当你只有Android设备时,使用纯Chrome对于开发人员来说是很痛苦的! - vintprox

10
我知道这个问题是关于如何在Android上禁用Chrome缓存,但这可能会帮助寻找移动开发解决方案的人们。
要在您的Android设备上查看网站更改,请使用Chrome Web菜单中的新建无痕标签
  1. 点击Chrome浏览器右上角的下拉菜单
  2. 点击"新建无痕标签"
  3. 导航到您的网站并查看所有最新的更改。
重要提示:在使用无痕浏览后查看新更改时,您必须完全关闭无痕模式并重新打开,因为当前标签页也会缓存。

很有帮助!我不知道为什么,在最新版本中我必须重新加载整个Chrome才能看到更改。 - vintprox
最简单的方法! - zheng li

2

要禁用缓存,首先需要在正在编辑的脚本/CSS缓存中禁用它们。

为此,请在文件包含中添加时间戳:

<link rel='stylesheet' href='/static/css/main.css?t={{ts}}'/>
<script type='text/javascript' src='/static/scripts/main.js?t={{ts}}'></script>

{{ts}} 是一个时间戳(我使用jinja模板语言)。

然后,如果您编辑您的html页面,您可以将一个随机参数添加到请求中,例如:

测试1: mywebsite.com/this_page

测试2: mywebsite.com/this_page/?i=1

测试3: mywebsite.com/this_page/?i=2

...

这更像是一个hack而不是一个真正的解决方案,但Chrome会友好地忽略cache-control元标记,所以没有太多干净的方法来解决它。


这是唯一对我有效的解决方案,因为我不使用PC进行开发。 - redolent

0
以下的Bash脚本将会重命名
``````

``````
在一个`index.html`文件中,这将防止移动设备缓存。
#!/bin/bash

time=$(date +"%T")
sed -i "s/app.js/app.js?t=${time}/" ./path/to/index.html

-1

下载这个应用程序:App Cache Cleaner

  1. 打开应用程序
  2. 通过“三个点”的按钮进入应用程序设置

screenshot

  1. 选中显示小部件选项,其余由您决定

您也可以禁用Chrome的数据压缩策略和页面预加载。

目前,Chrome中没有“禁用缓存”选项

screenshot2

PS:由于我的声望较低,我无法显示图片,请帮助我提高声望;p


@Joshua的回答也很有帮助。 - abhik lodh
请注意格式、拼写和语法,这将有助于获得更高的声誉。 - Dean Meehan

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