Подтвердить что ты не робот

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

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

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

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

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

  • удаление файлов cookie и данных веб-сайта

  • перезагрузка iPad

  • Я удалил manifest="manifest.appcache" (затем повторил 1 - 3)

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

    <meta http-equiv="cache-control" content="no-cache"> и
     <meta http-equiv="pragma" content="no-cache">

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

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

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

4b9b3361

Ответ 1

  • Кажется, что внесение изменений в ваш файл манифеста (например, добавление номера версии), должно заставить приложение перезагрузить контент: Мобильное веб-приложение не очищает кеш должным образом

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

Cheers, Z.

Ответ 2

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

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

Ответ 3

Я нашел этот php script для вывода правильного файла 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";
?>

atm я не могу проверить на ios 7

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

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