Ответ 1
Я не думаю, что вы можете иметь это в обоих направлениях. Вы не можете иметь приложение на основе 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: Руководство для начинающих по использованию кэша приложений.