Я не думаю, что вы можете получить это обоими способами.Вы не можете иметь приложение на основе URL и для хранения вашего HTML в кеше.Как только вы говорите «перейти по этому URL», браузер (даже безрамный веб-приложение) вступает во владение.Вы не можете сказать, «но используйте этот HTML вместо этого».
Теперь, если ваше приложение было более управляемым Javascript и динамически создавалось (что я рекомендую для мобильных веб-приложений), это легко, потому что изменение страниц нене включать изменение URL.Вы можете использовать шаблон, подобный следующему:
$( function () {
var lastPageName = window.localStorage.getItem( 'lastPageName' ),
lastPageData = window.localStorage.getItem( 'lastPageData' );
if ( lastPageName ) {
loadPage( lastPageName, lastPageData );
} else {
loadPage( "home" );
};
} );
function loadPage( name, data ) {
var pageData;
if( data ) {
pageData = data;
} else {
pageData = loadPageData( name );
window.localStorage.setItem( 'lastPageName', name );
window.localStorage.setItem( 'lastPageData', pageData );
};
//build page using name and pageData
};
В мобильных приложениях на основе URL-адреса единственный способ заставить браузер не перезагружать страницу с сервера, когда вы говорите "перейти по этому URL-адресу"", это использовать файл манифеста.
Добавьте это к вашему элементу <html>
:
<html manifest="app.manifest">
Убедитесь, что ваш веб-сервер обслуживает файлы с расширением .manifest
с text/cache-manifest
MIME-тип.
Затем создайте файл с именем app.manifest
:
CACHE MANIFEST
#version 1.0
#files to cache here
CACHE:
home.html
#files to refresh every time
NETWORK:
login.html
Как только страница будет кэширована, она не будет обновляться, пока не появится новый файл манифеста.Это просто означает, что файл изменился каким-либо образом, включая комментарии (что угодно после #
).Строка версии (которая является просто комментарием и не имеет никакого особого значения для файла) позволяет обновлять с помощью только изменения номера версии.
Существует также и API для согласования с манифестом кэша с использованием window.applicationCache
объект.На HTML5 Rocks есть отличное руководство: Руководство для начинающих по использованию кэша приложений .