Автономное веб-приложение для iOS не может загрузить новый контент после обновления до iOS7

У меня есть приложение JavaScript, которое я запускаю в автономном режиме (добавлено на домашний экран) на iPad.

Я обновил iOS 6 до iOS 7, и теперь мое приложение всегда загружает один и тот же контент, оно продолжает кэшироваться. Даже если я загружаю свои файлы JS и CSS динамически при каждой загрузке приложения с уникальной отметкой времени в качестве параметра. Мне нужно было это, чтобы быть уверенным, что файлы JS и CSS не кэшируются, и это работает в iOS 6.

Я попробовал следующее:

  1. удаление приложения с главного экрана

  2. удаление файлов cookie и данных сайта

  3. перезапуск iPad

  4. я имел manifest="manifest.appcache" удалил это (затем повторил попытку с 1 по 3)

  5. Я добавил следующие метатеги

    <meta http-equiv="cache-control" content="no-cache"> а также
    <meta http-equiv="pragma" content="no-cache">

  6. Так как я разрабатываю это локально, и эта страница обслуживается с моего настольного ПК, я попытался изменить IP своего ПК, а затем попытался с 1 по 3, но это не решило мою проблему.

Таким образом, все мои изменения не появляются, независимо от того, находятся ли они в файле HTML или JS.

Очевидно, есть некоторые изменения в том, как iOS обрабатывает автономные приложения. Что мне не хватает?

7 ответов

  1. Похоже, что внесение изменений в файл манифеста (например, добавление номера версии) должно привести к перезагрузке приложения: Mobile Web App не очищает кэш должным образом

  2. Вы должны добавить номер версии в ваши CSS и JS URL для решения проблем с кэшированием. например, file.css?v=2

Ура, Z.

Просто удалите ссылку на манифест в своем HTML. т.е. не используйте файл манифеста.

И пока вы это делаете, ваш файл манифеста подается с правильным mimetype?

Как насчет того, чтобы вручную обновить кеш, а затем перезагрузить страницу:

<script>
if(window.applicationCache) {
  applicationCache.onnoupdate = function() { alert("debug: manifest not changed!") };
  applicationCache.onupdateready = function() { location.reload() };
  applicationCache.update();
}
</script>

Попробуйте удалить приложение с домашнего экрана, затем перейдите к URL-адресу приложения в Safari, но в конце своего URL-адреса в Safari добавьте что-то вроде ?v=2, Затем нажмите "Перейти" и добавьте на главный экран. Это гарантирует, что вы получаете не кэшированную версию вашего css и javascript с сервера.

Вы также можете добавить случайное число в конце ваших вызовов JavaScript и CSS в вашем HTML. Это гарантирует, что все будущие запросы от приложения на домашнем экране получат некэшированные версии CSS и JavaScript.

Я нашел этот php-скрипт для вывода правильного файла manifest.cache в браузер

Я сделал некоторое время назад, может быть, это помогает.

он автоматически проверяет, изменены ли некоторые файлы, и заставляет браузер перезагрузить новый файл manifest.cache.

manifest.php

<?php
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST\n";
$hashes="";
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file){
 if ($file->IsFile()&&$file!="./manifest.php"&&substr($file->getFilename(),0,1)!="."){
  echo $file."\n";$hashes.=md5_file($file);
 }
}
echo "NETWORK:\n";
echo "*\n";
echo "FALLBACK:\n";
echo "online.html fallback.html\n";

echo "# Hash: " . md5($hashes) . "\n";
?>

АТМ я не могу проверить на IOS 7

Попробуйте вручную очистить кеш. Вы можете сделать это через настройки.

Я нашел этот урок. Оказывается, ios7 хранит данные веб-сайта в другом месте, чем просто в разделе cookie и данных.

http://www.imore.com/how-clear-stored-website-data-ios-7-safari

  1. Запустите приложение "Настройки" на главном экране вашего iPhone или iPad.
  2. Прокрутите вниз и нажмите на Safari.
  3. Теперь пролистайте до конца и нажмите "Дополнительно".
  4. Нажмите на данные веб-сайта. Обратите внимание, что здесь вы можете увидеть, сколько места занимают данные на вашем сайте iPhone или iPad.
  5. Снова прокрутите вниз и нажмите "Удалить все данные веб-сайта".
  6. Подтвердите еще раз, что вы хотите удалить все данные.
Другие вопросы по тегам