【问题标题】:iPhone Web App disable cacheiPhone Web App 禁用缓存
【发布时间】:2010-12-22 08:24:11
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    您尝试过哪些元标记?

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

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

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

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


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

    未经测试的建议:

    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 中为主页添加书签(添加令牌获取参数后重定向...),如果您明白我的意思...最好
    • 未经测试的版本(window.onload .....)很好用!唯一不好的是你只需要在每次发布时都不断地改变它。我在您访问的页面上使用了 iframe,它嵌入了一个页面,该页面重定向到您要向用户显示的实际页面。然后我让 htaccess 更改重定向到重定向到页面的页面?randomJunk 并且它不会缓存 htaccess 所以它工作得很好。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      相关资源
      最近更新 更多