Как очистить кэш веб-приложения IOS на главном экране? - PullRequest
26 голосов
/ 09 ноября 2011

Я использую JQTouch для создания веб-приложения на главном экране, используя метатег «apple-mobile-web-app-enabled», но независимо от того, сколько раз я очищаю кэш из настроек, Javascript веб-приложения все ещеболее старая кэшированная версия.

Как ни странно, если я установлю содержимое метатега на;

<meta name="apple-mobile-web-app-capable" content="no" />

... затем добавлю веб-приложение на главный экран, я получу последнюю версию, когдаЯ запускаю его.

Еще, если я установлю метатег на;

<meta name="apple-mobile-web-app-capable" content="yes" />

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

PS.Я могу подтвердить, что это только javascript , который не будет обновляться.

Ответы [ 6 ]

20 голосов
/ 22 ноября 2011

Вы можете попробовать добавить уникальную строку в конец атрибута src вашего js include (например, используйте метку времени).Имейте в виду, что вам придется менять эту уникальную строку для каждого обновления, которое вы хотите выполнить, поэтому вы можете рассмотреть возможность выполнения отложенной загрузки (что само по себе может решить вашу проблему): <script type="text/javascript" src="myScript.js?012345"></script>

Этообычно заставляет браузер перехватывать последнюю версию скрипта.Может работать ...

1 голос
/ 19 июля 2013

Я обнаружил, что использование функции связывания в ASP.NET MVC решило эту проблему для меня.

Он автоматически генерирует связанную ссылку вида:

http://www.domain.com/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81

Маркер после v = изменяется, если изменяется какой-либо файл в пакете, гарантируя, что запросы браузера для пакета получат последний пакет.

1 голос
/ 15 июня 2012

Это способ, который помог мне очистить полностью кэш:

1-Удалить вкладки в Safari, где есть ваше приложение.
2-Удалить значокприложения на главном экране.
3- Убить сафари из памяти.
4 - Зайдите в настройки / safari и нажмите очистить кеш.
5-Вы можетеперезагрузите ваш iPhone / iPod, если хотите убедиться, что он работает

0 голосов
/ 08 августа 2014

Основываясь на том, что сказал SquareFeet, можно каждый раз автоматически вытягивать новый файл с помощью уникального тега GET, добавляемого к имени файла, с использованием PHP.Например:

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <?php echo(mt_rand(10000000, 99999999)); ?>
" />

Теоретически, эту же задачу можно выполнить с помощью JavaScript, хотя и с некоторыми изменениями на веб-сервере:

<link rel="stylesheet" type="text/css" href="/css/global.css?
   <div id="id"></div>
" />

<script language="Javascript" type="text/javascript">
   document.getElementById("id").innerHTML = Math.floor((Math.random() * 10000) + 1);
</script>
0 голосов
/ 07 ноября 2013

Это сводило меня с ума. Я попытался убить Safari, очистить кеш, переключиться в приватный режим и удалить веб-приложение с домашнего экрана. Ничего из этого не работает, но работает временная загрузка страницы веб-приложения в самом Safari и перезагрузка .

Если вы используете добавить на главный экран , вы можете добавить? Web_app_ready = 1 к URL-адресу установки. Поскольку это не процедура конечного пользователя, добавление строки запроса к каждому сценарию (ответ выше), вероятно, будет более эффективным для сред, не являющихся разработчиками.

0 голосов
/ 19 августа 2012

Если вы взломаны, просто сделайте это в терминале

rm ./Library/Caches/com.apple.webapp/Cache.db
...