iPhone网络应用程序禁用缓存

6
我使用PHP构建了一个iPhone Webapp。主页(也是唯一的页面)包含apple-mobile-web-app-capableapple-touch-fullscreen元标签,以便一旦添加到主屏幕上就可以全屏运行。然而,似乎每次我从主屏幕启动应用程序时,都会使用缓存版本的页面,而不是刷新页面(当然,我需要在启动时更新页面,并且不能在这里使用Ajax - 需要使用SSO phpCAS动态验证用户)。我没有使用任何清单文件,并尝试添加有关缓存的元标签,但没有成功。有人知道如何解决这个问题吗?谢谢。
2个回答

3

What meta tags have you tried?

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

我建议告诉Safari不要缓存,但我还没有尝试过。

您可以使用JavaScript从缓存的页面加载您的“真实”启动页面,使用任何标准技术使URL唯一,例如添加随机数。

这可能甚至适用于主要的启动页面,但我表示怀疑。不过还是值得一试。


我建议只有在Springboard上才加载新页面:

未经测试的建议:

window.onload = function () {
   if (navigator.standalone) {
     document.location.href = 'http://your.com/whatever.php?randomjunk=1234')  }
}

如果网页在浏览器中打开,它可以提供保存到主屏幕的指令,如果从主屏幕运行,它将加载真实的页面。


谢谢你的帮助。 是的,我尝试了你提到的元标签,但仍然在加载缓存。请注意,只有当标签apple-mobile-web-app-capable设置为YES时才会发生这种情况(但我需要这个标签来使网页全屏运行),而且只有在我使用Springboard上的图标时才会出现这个问题。将一个随机生成的令牌添加到URL中可以解决这个问题,但这意味着需要重定向:所以在Safari Mobile中不再可能将主页(在添加令牌获取参数后进行重定向...)添加到书签中了,你知道我的意思吗...最好的解决方法 - Benoit
未经测试的版本(window.onload......)运行良好且非常好!唯一的问题是你必须在每次发布时不断更改它。我在您要访问的页面上使用了一个iframe,并嵌入了一个重定向到实际页面的页面。然后,我有htaccess更改将重定向的页面重定向到页面?randomJunk,它不会缓存htaccess,因此可以完美地工作。 - Cameron

2
我知道当你包含一个清单文件时,主页会自动缓存,但我不认为在仅使用...web-app-capable时会发生这种情况。你是否尝试过使用缓存清单文件并将页面列在“Network:”下,以明确排除它不被缓存?如果不是这样,那么就必须与标题和 meta 信息有关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接