Как вы заставляете обновлять веб-приложение с закладок на главном экране iPad?
У меня возникла проблема, когда я добавляю веб-приложение на домашний экран iPad (iOS 5.0.1 iPad 2), и когда я его открываю, он, похоже, кэширует что-то за кулисами, независимо от Safari.
Я очистил все из Safari, доступное в настройках (Очистить историю и Очистить файлы cookie и данные), и когда я перехожу к веб-приложению с помощью Safari, я вижу приложение в его текущем состоянии. Однако, если я открою закладку главного экрана, я получаю приложение в предварительно измененном состоянии.
Я видел много информации об использовании cache.manifest для кэширования ресурсов для использования в автономном режиме, но я не уверен, что это имеет отношение к этому, так как я хотел бы прямо противоположное: ничего не кэшировать.
Я пошел на уровень даже не проверки внешних ресурсов; если я изменяю какую-либо произвольную тестовую строку в элементе body моего index.html, закладка главного экрана не отображает обновленный текст.
Ответы
Ответ 1
Я думаю, что нашел обходное решение:
Новая версия сайта появляется только при изменении файла index.html.
(первый файл для загрузки)
Если вы оставите index.html и измените только некоторые js в других файлах, тогда сайт не загрузит новую версию.
Ответ 2
Другим обходным решением является добавление? v = 1 к вашим ссылкам Javascript и CSS. Например:
<link rel="stylesheet" type="text/css" media="all" href="./css/ipad.css?v=1">
<script src="./js/ipad.js?v=1"></script>
Кажется, вам не нужно обновлять номер, когда ваш файл изменился, насколько я могу судить. По-видимому, на iPad 2 с установленным последним обновлением программного обеспечения достаточно просто намекнуть на что-то динамическое.
Ответ 3
Создайте cache.manifest
, который инструктирует его никогда не кэшировать ресурсы, на которые ссылается главная страница html:
CACHE MANIFEST
# Version 1.0000
NETWORK:
*
Используйте его в своем index.html
:
<!DOCTYPE html>
<html manifest="cache.manifest">
Теперь, когда вы меняете этот файл манифеста, например, увеличивая номер версии в этом комментарии, браузер также перезагрузит index.html
.
Убедитесь, что ваша страница перезагружается при обновлении кеша:
<script>
function updateSite(event) {
window.location.reload();
}
window.applicationCache.addEventListener('updateready', updateSite, false);
</script>
Библиотека разработчиков Safari имеет хорошую документацию.
Ответ 4
В наших приложениях для веб-приложений iOS мы используем следующее. Пока нет проблем с кешем:
1- У нас есть один файл манифеста кэша с именем manifest.appcache.php
<?php
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
header('Content-type: text/cache-manifest');
?>
CACHE MANIFEST
CACHE:
# Don't cache anything
FALLBACK:
# Nothing
NETWORK:
# Request everything from server
*
2 - В файле HTML мы имеем:
<!DOCTYPE html>
<html lang="en" manifest="manifest.appcache.php">
<head>
...
Ответ 5
У меня есть приложение angular, которое я разрабатываю, и столкнулся с этой проблемой при попытке протестировать его на iPad. Добавив бессмысленный запрос в конец URL-адреса, я смог получить текущую версию всех активов.
www.somesite.com?meaninglessquery
Ответ 6
Вы можете принудительно перезагрузить открытое веб-приложение, не используя кеш, если вы открыли Safari Web Inspector и указали на свое открытое веб-приложение. Когда активен веб-инспектор, нажмите SHIFT + COMMAND + R
(на Mac). Возможно, вам потребуется обновить еще раз, чтобы запустить обновленные активы.
Ответ 7
Мне повезло с отключением устройства.
Я изменил манифест приложения; но предположительно, вам нужно обновить или что-то, чтобы заставить браузер искать его.
Поскольку я удалил браузер Chrome, нет кнопки reset. Мы попробовали "закрыть" приложение (ха-ха) и открутить приложение; но я полагаю, что iOS имеет тенденцию держать все в порядке.
Выключение делало трюк, чтобы обновить его.
Может быть, есть какой-то жест для обновления, которого я не знаю. Возможно, нужно заправить небольшую кнопку обновления "проверить обновления" в кэшированных веб-приложениях.
Ответ 8
В последних инструментах разработчика Safari (v12.0.1) есть кнопка "Игнорировать кэш ресурсов" в правом верхнем углу вкладки "Сеть". Проверьте это, затем перезагрузите.