2009-12-02 66 views
6

我已经使用PHP构建了iPhone webapp。主要(也是唯一)页面包括支持apple-mobile-web-app-的苹果触摸全屏元标记,以便它可以在添加到主屏幕后运行全屏。但是,似乎每次我从主屏幕启动应用程序时,都会使用页面的缓存版本,而不是刷新页面(当然,我需要在启动时更新页面,并且无法在此处使用Ajax - 需要使用SSO phpCAS动态验证用户)。我没有使用任何清单文件,并尝试添加有关缓存的元标记,但没有成功。有人知道如何解决这个问题吗?iPhone Web App禁用缓存

谢谢

回答

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') } 
} 

所以如果页面在浏览器,它能够给出指令在保存到主屏幕时,如果它从主屏幕运行,它将加载实际页面。

+0

感谢您的帮助。 是的我试过了你提到的元标记,但它仍在加载缓存。请注意,只有当Apple-mobile-web-app-capable标签设置为YES(但我需要这个,因为希望网络运行全屏)并且仅当我在Springboard上使用图标时才会发生这种情况。向URL添加一个随机生成的标记可以解决这个问题,但这意味着重定向:所以在Safari Mobile中不再可以为主页添加书签(在添加令牌get paremeter之后重定向...),它就是你看看我的意思... 最好 – Benoit 2009-12-02 16:54:41

+0

未经测试的版本(window.onload .....)的作品,太棒了!唯一不好的是你只需要不断改变它的每一次发布。我在页面上使用了一个iframe,它嵌入了一个页面,该页面重定向到您想要显示用户的实际页面。然后我有htaccess改变重定向页面重定向到页面randomJunk,它不会缓存htaccess所以它完美的作品。 – 2017-02-18 18:57:19

2

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