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

Как вы заставляете обновлять веб-приложение с закладок на главном экране iPad?

У меня возникла проблема, когда я добавляю веб-приложение на домашний экран iPad (iOS 5.0.1 iPad 2), и когда я его открываю, он, похоже, кэширует что-то за кулисами, независимо от Safari.

Я очистил все из Safari, доступное в настройках (Очистить историю и Очистить файлы cookie и данные), и когда я перехожу к веб-приложению с помощью Safari, я вижу приложение в его текущем состоянии. Однако, если я открою закладку главного экрана, я получаю приложение в предварительно измененном состоянии.

Я видел много информации об использовании cache.manifest для кэширования ресурсов для использования в автономном режиме, но я не уверен, что это имеет отношение к этому, так как я хотел бы прямо противоположное: ничего не кэшировать.

Я пошел на уровень даже не проверки внешних ресурсов; если я изменяю какую-либо произвольную тестовую строку в элементе body моего index.html, закладка главного экрана не отображает обновленный текст.

4b9b3361

Ответ 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) есть кнопка "Игнорировать кэш ресурсов" в правом верхнем углу вкладки "Сеть". Проверьте это, затем перезагрузите.