Автономное веб-приложение 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 обрабатывает автономные приложения. Что мне не хватает?
Ответы
Ответ 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.
- Прокрутите страницу вниз и нажмите "Удалить все данные веб-сайта".
- Подтвердите еще раз, когда вы хотите удалить все данные.