Apple似乎改变了主屏幕/独立网络应用在iOS 6中的工作方式。根据各种博客文章(example),这些应用程序现在可以获得自己的专用空间来存储缓存文件,sqllite dbs ,本地存储等,而不是像以前一样与Safari浏览器共享。
在iOS 6开发之前,我曾经虔诚地通过以下程序来清除缓存......
不幸的是,既然Apple已经移动了目标帖子,那么相同的程序似乎并不起作用。清除之后,即使我的更改在Safari中被选中,当我添加到主屏幕并启动应用程序时,旧的HTML,JS等仍然被选中。
有谁知道如何在iOS 6中可靠地完全清除缓存?
答案 0 :(得分:9)
我无法验证正确清除缓存,但这对我有用:
要执行此操作,您需要在iOS设备上允许Web Inspector。 转到设置> Safari>高级> Web Inspector(必须处于活动状态) 您必须激活计算机Safari上的开发人员菜单。 转到首选项>高级>激活开发人员菜单
不知何故,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];