HTML5: Javascript для принудительного восстановления автономного кеша?

Следуя руководству html5rocks, я надеялся, что window.applicationCache.update() поможет принудительно перестроить автономный кеш. (http://www.html5rocks.com/en/tutorials/appcache/beginner/#toc-updating-cache)

Цель состоит в том, чтобы позволить пользователям нажать кнопку «обновить кеш». Это потому, что даже файлы (css, img и т.д.) модифицируются, компьютер/планшет даже не проверяет их на наличие обновлений. Пользователи остаются со старым контентом.

Как это можно сделать в JS?


person Jem    schedule 20.09.2012    source источник


Ответы (1)


Если вы спрашиваете, «как клиент должен знать, что файлы изменены», то ответ прост — манифест кеша должен содержать какой-то уникальный идентификатор, который обновляется при обновлении этих файлов. Я генерирую манифест с помощью PHP и использую комбинацию монотонно увеличивающегося номера версии и MAX(filemtime) из всех кэшированных файлов - когда файл манифеста отличается от того, который есть у клиента, он будет проверять все файлы, указанные в манифесте, на наличие обновлений. .

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

swapCache() заменит старую кешированную версию новой загруженной.

Однако в этот момент ваш старый JS уже создал всю сантехнику, от которой зависит ваша страница...

Мое приложение html5 периодически вызывает update(), и когда обновление кеша загружается, оно просто отображает кнопку для пользователя с надписью «Установить обновления!», которая просто перезагружает страницу - таким образом, недавно загруженные файлы кеша применяются, когда пользователь выбирает , не нарушая его рабочего процесса.

person DCoder    schedule 20.09.2012