Веб-приложение iPhone отключает кэш - PullRequest
6 голосов
/ 02 декабря 2009

Я создал веб-приложение для iPhone с использованием PHP. Главная (и единственная) страница содержит метатеги apple-mobile-web-app и apple-touch-fullscreen , чтобы она могла работать в полноэкранном режиме после добавления на домашний экран. Однако, кажется, что каждый раз, когда я запускаю приложение с домашнего экрана, вместо обновления страницы используется кеш-версия страницы (и, конечно, мне нужно обновить страницу при запуске, и я не могу использовать Ajax здесь - нужно динамическая аутентификация пользователя с помощью SSO phpCAS). Я не использовал файл манифеста и безуспешно пытался добавить метатеги о кеше. Кто-нибудь знает, как это исправить?

Спасибо

Ответы [ 3 ]

3 голосов
/ 02 декабря 2009

Какие метатеги вы пробовали?

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

поэтому, если страница находится в браузере, она может дать инструкции по сохранению на домашний экран, и если она запускается с домашнего экрана, она загрузит реальную страницу.

2 голосов
/ 12 мая 2012

Я знаю, что когда вы включаете файл манифеста, главная страница кэшируется автоматически, но я не думаю, что это произошло, когда просто ... с поддержкой веб-приложений. Вы пытались использовать файл манифеста кэша и перечислить свою страницу в разделе «Сеть:», чтобы явно исключить его из этого метода кэширования? Если это не так, это должно быть связано с заголовком и метаинформацией.

0 голосов
/ 16 сентября 2015

Вы должны использовать манифест HTML5 Cache следующим образом:

<!DOCTYPE HTML>
<html manifest="cache.manifest">
<head>

Пожалуйста, прочитайте здесь Документы Apple о Кэше автономного приложения HTML5

...