iOS6 - 如何清除主屏幕/独立Web应用程序的缓存?

时间:2012-10-10 09:54:09

标签: ios html5 web-applications

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

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

  1. 从主屏幕删除应用。
  2. 关闭Safari中的所有页面/标签。
  3. 最后"清除Cookies&数据"或"清除数据"在"设置" > "野生"
  4. 不幸的是,既然Apple已经移动了目标帖子,那么相同的程序似乎并不起作用。清除之后,即使我的更改在Safari中被选中,当我添加到主屏幕并启动应用程序时,旧的HTML,JS等仍然被选中。

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

9 个答案:

答案 0 :(得分:9)

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

要执行此操作,您需要在iOS设备上允许Web Inspector。 转到设置> Safari>高级> Web Inspector(必须处于活动状态) 您必须激活计算机Safari上的开发人员菜单。 转到首选项>高级>激活开发人员菜单

  1. 使用USB连接线将设备连接到计算机
  2. 去野生动物园>开发>您的设备名称>检查应用程序(应用程序必须运行)
  3. 这将打开计算机上用于Web应用程序的检查器
  4. 检查员打开时清除缓存(命令+ alt + E)
  5. 检查员仍然打开时刷新计算机上的页面(命令+ R)
  6. 不知何故,Webapp缓存被清除,我得到了非缓存代码。

答案 1 :(得分:6)

我发现了一个解决方法。只需在网页上添加一个链接,以便在看到新版本时遇到问题的用户......

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

它就像地址栏上的iPhone / iPad刷新按钮一样!

答案 2 :(得分:4)

首先将手机插入计算机,然后打开手机上的网络应用程序和计算机上的Safari,然后您可以通过菜单“开发&gt;手机名称&gt;应用程序标题”打开Safari中的网络检查器(如果您无法看到开发菜单,您可以在Safari的首选项中打开它。)

从那里你可以看到/编辑cookie和本地存储,就像计算机上的网站一样,当检查员聚焦时按下命令+ r将重新加载手机上的应用程序。

答案 3 :(得分:3)

您可以在计算机上connect your device and open Safari's web inspector并在控制台选项卡中运行document.location.reload()以重新加载页面。

在重新加载之前,您可以按选项 + 命令 + E 以确保清除缓存。

除了上述内容,您还可以按 Shift + Command + R 重新加载没有缓存的页面,但有时它无效我

答案 4 :(得分: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)

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

目前处理此问题的唯一方法是等待,但有一种解决方法。如果更改文件名,则会提取新代码。但是,如果在清除缓存之前将其更改回旧名称,则将使用旧代码。缓存会定期刷新并最终更新。我刚刚发生了一个拒绝改变的CSS文件。时间会解决它,但是如果你只是需要它来更新测试,名称更改将起作用。

答案 7 :(得分:0)

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

答案 8 :(得分:-1)

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

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[self.webView loadRequest:request];