iPhone Web App禁用缓存

时间:2009-12-02 09:29:30

标签: javascript iphone safari web-applications mobile-safari

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

由于

3 个答案:

答案 0 :(得分:3)

您尝试过哪些元标记?

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

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

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

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


我建议缓存页面只有在跳板上才会加载新页面:

UNTESTED建议:

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

因此,如果页面在浏览器中,它可以提供有关保存到主屏幕的说明,如果从主屏幕运行它将加载真实页面。

答案 1 :(得分:2)

我知道当你包含一个清单文件时,主页面会自动缓存,但我不认为它只是在使用... web-app-capable时才会发生。您是否尝试过使用缓存清单文件并在“网络:”下列出您的页面,以明确地将其从此缓存方法中排除?如果不是这个,则必须与标题和元信息有关。

答案 2 :(得分:-1)

您必须使用HTML5缓存清单,如下所示:

from bigfloat import sub, add, mul, div, sqr, sqrt, precision

a=1e-8
b=10
c=1e-8
p = 100

D = sub(sqr(b) , mul(4, mul(a,c) ), precision(p))

x1 = div( - add(b , sqrt(D, precision(p))) , mul(2,a), precision(p))
x2 = div( - sub(b , sqrt(D, precision(p))) , mul(2,a), precision(p))

print x1,x2

-999999999.99999997907743916987153 -9.9999999999981901320509082432747e-10

请在此阅读Apple关于HTML5 Offline Application Cache

的文档