如何在主屏幕上清除IOS Web App的缓存?

时间:2011-11-09 09:49:54

标签: javascript iphone web-applications jqtouch iphone-standalone-web-app

我正在使用JQTouch在主屏幕上使用元标记“apple-mobile-web-app-capable”创建Web应用程序,但无论我在设置中清除缓存多少次,Web App的Javascript仍然是较旧的缓存版本。

奇怪的是,如果我将元标记的内容设置为;

<meta name="apple-mobile-web-app-capable" content="no" />

...然后将Web App添加到主屏幕,我在启动时获得最新版本。

然而,如果我将元标记设置为;

<meta name="apple-mobile-web-app-capable" content="yes" />

...然后将Web App添加到主屏幕,我得到较旧的缓存版本。

PS。我可以确认仅限javascript ,但不会刷新。

6 个答案:

答案 0 :(得分:20)

您可以尝试在js include的src属性的末尾添加一个唯一的字符串(例如,使用时间戳)。请记住,您必须为每个要执行的刷新更改此唯一字符串,因此您可能需要考虑进行延迟加载(这本身可以解决您的问题): <script type="text/javascript" src="myScript.js?012345"></script>

这通常会迫使浏览器抓取最新版本的脚本。可能会工作......

答案 1 :(得分:1)

我发现在ASP.NET MVC中使用bundling功能为我解决了这个问题。

它会自动生成以下形式的捆绑链接:

http://www.domain.com/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81

如果捆绑包中的任何文件发生更改,则v =更改后的令牌会保证对该捆绑包的浏览器请求将获得最新的捆绑包。

答案 2 :(得分:0)

这是一种让我清除完全缓存的方法:

1 - 删除Safari中存在应用程序的标签。
2 - 在主屏幕中删除应用程序的图标 3 - 来自记忆的Kill狩猎 4 - 进入设置/旅行,然后按清除缓存 5 - 如果您想确保它可以正常工作,您可以重新启动iPhone / iPod

答案 3 :(得分:0)

如果你被越狱,只需在终端

中执行此操作
rm ./Library/Caches/com.apple.webapp/Cache.db

答案 4 :(得分:0)

这让我绝对疯了。我尝试杀死Safari,清除缓存,切换到私人模式,并从主屏幕中删除Web应用程序。这些都不起作用,但是在Safari本身临时加载Web应用程序页面并重新加载的工作原理是什么。

如果您使用的是add to home screen,则可以将?web_app_ready = 1添加到安装网址。由于这不是最终用户程序,因此向每个脚本添加查询字符串(上面的答案)可能对非开发人员环境更有效。

答案 5 :(得分:0)

建立SquareFeet所说的,每次都可以使用PHP在文件名后附加一个唯一的GET标记,自动将新文件拉下来。例如:

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

理论上,使用JavaScript可以完成相同的任务,尽管对Web服务器进行了一些修改:

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <div id="id"></div>
" />

<script language="Javascript" type="text/javascript">
   document.getElementById("id").innerHTML = Math.floor((Math.random() * 10000) + 1);
</script>