你如何强制iPad主屏幕书签的web应用程序刷新?

时间:2012-01-09 17:05:20

标签: ipad caching homescreen

我遇到了一个问题,我将一个网络应用程序添加到我的iPad主屏幕(iOS 5.0.1 iPad 2),当我打开它时,它似乎是在幕后缓存一些东西,独立于Safari。

我已经清除了设置(清除历史记录和清除Cookie和数据)中提供的Safari中的所有内容,当我使用Safari导航到Web应用程序时,我看到应用程序处于当前状态。但是,如果我打开主屏幕书签,我会让应用程序处于预先更改状态。

我已经看到很多关于使用cache.manifest来缓存资源以供离线使用的信息,但是我不确定这是否与此相关,因为我想要完全相反:什么都不缓存。

我已经达到了甚至不测试外部资源的程度;如果我在index.html的body元素中更改了一些任意测试字符串,则主屏幕书签不会显示更新的文本。

7 个答案:

答案 0 :(得分:24)

另一种解决方法是在您的Javascript和CSS链接中添加?v = 1。例如:

<link rel="stylesheet" type="text/css" media="all" href="./css/ipad.css?v=1">    
<script src="./js/ipad.js?v=1"></script>

据我所知,在您的文件发生变化时似乎没有更新数字。显然,在安装了最新软件更新的iPad 2上,仅仅暗示一些动态的东西就足够了。

答案 1 :(得分:11)

创建一个cache.manifest,指示它永远不会缓存主html页面引用的资源:

CACHE MANIFEST

# Version 1.0000

NETWORK:
*

index.html

中使用它
<!DOCTYPE html>
<html manifest="cache.manifest">

现在每当您更改该清单文件时(例如,通过增加该评论中的版本号),浏览器也会重新下载index.html

确保在更新缓存时重新加载页面:

<script>
function updateSite(event) {
    window.location.reload();
}
window.applicationCache.addEventListener('updateready', updateSite, false);
</script>

The Safari Developer Library has good documentation

答案 2 :(得分:5)

我想我找到了一个解决方法:

仅在index.html文件更改时才会显示该网站的新版本 (要加载的第一个文件)

如果您离开index.html并且只更改其他文件中的某些js,则该网站不会加载新版本。

答案 3 :(得分:5)

对于我们的iOS网络剪辑应用,我们使用以下内容。到目前为止没有缓存问题:

1-我们有一个名为'manifest.appcache.php'的缓存清单文件

<?php
    header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
    header('Content-type: text/cache-manifest'); 
?>

CACHE MANIFEST

CACHE:
# Don't cache anything
FALLBACK:
# Nothing
NETWORK:
# Request everything from server
*

2 - 在HTML文件中我们有:

<!DOCTYPE html>
<html lang="en" manifest="manifest.appcache.php">
    <head>
...

答案 4 :(得分:2)

如果您打开Safari Web Inspector并指向打开的Web应用程序,则可以强制打开Web应用程序而不使用缓存重新加载。启用Web Inspector后,按SHIFT + COMMAND + R(在Mac上)。您可能需要再刷新一次才能触发更新的资产。

答案 5 :(得分:1)

我很幸运能够关闭设备电源。 我更改了应用清​​单;但据推测,您需要刷新或其他东西让浏览器查找它。 由于我删除了浏览器chrome,因此没有重置按钮。我们试过&#34;关闭&#34;应用程序(哈哈)并将应用程序轻扫;但我认为iOS无论如何都会让事情继续运行。 关闭它可以让它刷新。

也许还有一些我不知道的刷新姿态。也许人们应该掖一下&#34;检查更新&#34;刷新按钮进入缓存的Web应用程序。

答案 6 :(得分:0)

最新的Safari(v12.0.1)开发人员工具在“网络”标签的右上角有一个“忽略资源缓存”按钮。检查一下,然后重新加载。