iOS6 – 如何清除主屏幕/独立Web应用程序的caching?

看起来,苹果已经改变了主屏幕/独立的networking应用程序在iOS 6的工作方式。根据各种博客文章( 例如 )这些应用程序现在得到自己的专用空间来存储他们的caching文件,sqllite dbs,本地存储等,而不是像之前一样与Safari浏览器共享。

在开发iOS 6之前,我曾经通过以下程序虔诚地清除caching…

  1. 从主屏幕中删除应用程序。
  2. closuresSafari中的所有页面/标签。
  3. 最后在“设置”>“Safari”中“清除Cookies和数据”或“清除数据”。

不幸的是,现在苹果已经移动了目标职位,这个相同的程序似乎没有工作。 清除后,即使我的变化在Safari中被拿起,当我添加到主屏幕,并启动应用程序旧的HTML,JS等仍然拿起。

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

我无法validationcaching正确清除,但这对我工作:

为了做到这一点,你需要在你的iOS设备上允许Web Inspector。 转到设置> Safari浏览器>高级> Web Inspector(它必须是活动的),你必须激活您的计算机的Safari浏览器菜单。 转到首选项>高级>激活开发者菜单

  1. 使用USB电缆将设备连接到电脑
  2. 转到Safari浏览器>开发>您的设备名称>检查应用程序(该应用程序必须运行)
  3. 这将打开您的计算机上的检查员为Web应用程序
  4. 检查员打开时清除caching(command + alt + E)
  5. 随着检查员仍然打开刷新您的计算机上的页面(命令+ R)

不知何故Web应用程序caching清除,我得到了非caching的代码。

我find了一个解决方法。 只需在网页上放置一个链接,以便无法看到新版本的用户…

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

它就像地址栏上的iPhone / iPad刷新button一样工作!

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

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

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

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

而不是上面,你也可以按Shift + Command + R重新加载页面没有caching,但有时它没有为我工作。

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

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

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

目前处理这个问题的唯一方法就是等待,但有一个解决方法。 如果您更改文件的名称,它将拉新的代码。 但是,如果在caching清除之前将其更改回旧的名称,则将使用旧的代码。 caching定期刷新并最终更新。 我刚刚遇到了一个拒绝更改的CSS文件。 时间会解决它,但如果你只是需要更新testing,名称更改将工作。

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

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

这让我疯狂了一阵子。 试图清除设备上的caching – 没有运气。 重命名页面确实有帮助,但是一旦你重新命名它,你仍然会得到相同的陈旧版本。 昨天find了解决办法。 您需要将设备连接到Mac,然后在Safari Develop菜单中打开Web Inspector。 进入Web Inspector后,只需按下Inspector工具栏上的“重新载入页面”button,然后 – 瞧 – 你会看到设备屏幕上的新版本。

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

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