Как остановить обновление приложения?
Когда приложение находится в автономном режиме, оно остается в кэше, пока не произойдет одно из следующих событий:
- Пользователь очищает хранилище данных своего браузера для вашего сайта.
- Файл манифеста изменен. Примечание. Обновление файла, указанного в манифесте, не означает, что браузер повторно кэширует этот ресурс. Сам файл манифеста должен чередоваться.
- Кэш приложения обновляется программно.
http://www.html5rocks.com/tutorials/appcache/beginner/#toc-updating-cache
Вкратце: не изменяйте файл манифеста.
Как обновить файл манифеста для каждого пользователя индивидуально?
Если пользователь посещает веб-сайт в первый раз, его браузер загружает текущий манифест, поэтому мы будем использовать динамический URL и динамически генерировать файл манифеста:
<html manifest="manifest.php?version=2">
Браузер запоминает URL manifest.php?version=2
, и каждый раз сгенерированный файл манифеста остается неизменным, поэтому браузер не обновляется (файл манифеста не изменяется).
Файл сценария будет выглядеть так:
<?php
header ( "Content-Type: text/cache-manifest" ) ;
echo "CACHE MANIFEST\n\n" ;
echo "# version " . $_GET [ "version" ] . "\n" ;
echo "index.php\n" ;
echo "styles.css\n" ;
echo "scripts.js\n" ;
?>
Теперь, как заставить браузер загружать манифест из другого URL, например manifest.php?version=5
?
Я пытался изменить manifest
атрибут содержимого и позвонить window.applicationCache.update()
но браузер запрашивает файл манифеста со старого URL.
Другой способ может быть:
- спросить пользователя, хочет ли он / она обновить;
- если да, то сохранить cookie ("wish_to_update = 1");
- в manifest.php прочитайте cookie и проверьте, желает ли пользователь обновить;
в manifest.php:
if ( $_COOKIE [ "wish_to_update" ] == "1" )
{
// generate modified version
echo "# version another than in your URL" ;
setcookie ( "wish_to_update", "0" ) ;
}
else
{
// generate unmodified version
echo "# version " . $_GET [ "version" ] . "\n" ;
}
- измененный файл манифеста заставит браузер снова загрузить все ресурсы.