24

Apple 似乎改变了 iOS 6 中主屏幕/独立网络应用程序的工作方式。根据各种博客文章(示例),这些应用程序现在拥有自己的专用空间来存储其缓存文件、sqllite dbs、本地存储等,而不是像以前一样与 Safari 浏览器共享。

在iOS 6之前开发时,我曾经虔诚地通过以下过程来清除缓存...

  1. 从主屏幕删除应用程序。
  2. 关闭 Safari 中的所有页面/选项卡。
  3. 最后在“设置”>“Safari”中“清除 Cookie 和数据”或“清除数据”。

不幸的是,现在苹果已经移动了目标,同样的程序似乎不起作用。清除后,即使我的更改在 Safari 中被提取,当我添加到主屏幕并启动应用程序时,旧的 HTML、JS 等仍然被提取。

有谁知道如何可靠地完全清除 iOS 6 中的缓存?

4

9 回答 9

9

我无法验证缓存是否被正确清除,但这对我有用:

为此,您需要在 iOS 设备上启用 Web Inspector。转到设置 > Safari > 高级 > Web Inspector(它必须处于活动状态)并且您必须激活计算机 Safari 上的开发人员菜单。转到首选项 > 高级 > 激活开发人员菜单

  1. 使用 USB 数据线将您的设备连接到计算机
  2. 转到 safari > Developpement > Your Device name > Inspect an App(该应用程序必须正在运行)
  3. 这将在您的计算机上打开 Web 应用程序的检查器
  4. 检查器打开时清除缓存(command + alt + E)
  5. 在检查器仍然打开的情况下刷新计算机上的页面(命令 + R)

不知何故,Webapp 缓存被清除了,我得到了非缓存代码。

于 2014-06-28T11:59:14.120 回答
7

I found a a work-around. Just put a link on the web page itself for users who are having trouble seeing new version...

<a href="javascript:top.frames.location.reload();">refresh</a>

It works just like the iPhone/iPad refresh button on the address bar!

于 2014-11-02T13:47:07.043 回答
4

首先将手机插入电脑,然后打开手机上的网络应用程序和电脑上的Safari,然后您可以从菜单“开发>手机名称>应用程序标题”中打开Safari中的网络检查器(如果你不能查看开发菜单,您可以在 Safari 的首选项中将其打开)。

从那里您可以看到/编辑 cookie 和本地存储,就像您计算机上的站点一样,在检查员集中注意力时按 command+r 将在手机上重新加载应用程序。

于 2014-02-25T09:08:24.873 回答
3

您可以连接您的设备并在您的计算机上打开 Safari 的网络检查器document.location.reload(),然后在控制台选项卡中运行以重新加载页面。

在重新加载之前,您可以按Option+ Command+E以确保清除缓存。

除了上面的内容,您还可以按Shift++Command重新R加载没有缓存的页面,但有时它对我不起作用。

于 2015-12-09T17:12:21.847 回答
2

尝试将唯一的 GET 标记附加到任何和所有href属性的末尾,例如:

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <?php echo(mt_rand(10000000, 99999999)); ?>
" />

这将生成href="/css/global.css?########",几乎每次都有不同的数字。这迫使 iOS 的 Safari 将“新”页面拉下,因为它的缓存中没有来自相同 URI 的数据,而且很可能永远不会有(除非您计划在开发过程中重新加载应用程序数百万次:D)

于 2014-08-08T15:09:42.147 回答
1

如果 iOS6 设备应用了越狱,您可以使用 ssh 删除文件夹“/private/var/mobile/Library/Caches/com.apple.webapp”的内容。

下次启动 Web 应用程序时,将从 Web 服务器重新下载所有文件。

于 2013-11-27T16:42:58.673 回答
0

目前解决这个问题的唯一方法是等待,但有一种解决方法。如果您更改文件的名称,它将拉取新代码。但是,如果您在缓存清除之前将其更改回旧名称,则将使用旧代码。缓存会定期刷新,最终会更新。我刚刚遇到了一个拒绝更改的 CSS 文件。时间会解决它,但如果您只需要更新它以进行测试,那么更改名称即可。

于 2013-03-18T19:02:45.530 回答
0

这让我发疯了一段时间。尝试清除设备上的缓存 - 不走运。重命名页面确实有帮助,但是一旦你重命名它,你仍然会得到相同的陈旧版本。昨天找到了解决方案。您需要将设备连接到 Mac 并在 Safari 开发菜单中打开 Web Inspector。进入 Web Inspector 后,只需按 Inspector 工具栏上的“重新加载页面”按钮 - 瞧 - 您会在设备屏幕上看到新版本。

于 2016-11-15T13:28:06.053 回答
-1

只需将您传递给 webview 的请求设置为 NSURLRequestReloadIgnoringLocalCacheData

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[self.webView loadRequest:request];
于 2012-10-20T17:37:59.763 回答