В зависимости от вашего приложения может оказаться возможным использовать модифицированную версию подхода @ schibum, разбив ваше приложение на «мини» приложения, а затем кэшируя подразделы в iframe. Рассмотрим этот пример:
index.html
<html manifest="indexx.manifest">
<head>
<script src="jquery-2.1.4.min.js"></script>
<script src="index.js"></script>
<title>Index</title>
</head>
<body>
<ul>
<li><a href="1.html">One</a>
<li><a href="2.html">Two</a>
<li><a href="3.html">Three</a>
</ul>
<iframe id="if" />
</body>
</html>
index.manifest
CACHE MANIFEST
# 3
index.html
jquery-2.1.4.min.js
index.js
index.js
$( document).ready(function() {
var pages = ['1.html','2.html','3.html'];
var LoadNext = function() {
alert(pages[0]);
page = pages.shift();
alert(page)
if ( page !== undefined ) {
console.log("Attempting to load " + page);
$('#if').attr('src', page)
} else {
console.log("All done");
}
};
$('#if').load(function() {
console.log("Finished loading");
LoadNext()
});
LoadNext();
});
1.html
<html manifest="1.manifest">
<head>
<title>One</title>
</head>
<body>
<img src="1.jpg" width="50%">
</body>
</html>
1.manifest
CACHE MANIFEST
# 2
1.html
1.jpg
{2,3}. {Html, manifest} следует за формой {html, manifest}.
В результате каждая подстраница (1.html, 2.html, 3.html) имеет свой собственный манифест и, таким образом, кэшируется независимо. index.html имеет свой собственный (минимальный) манифест, поэтому кэширование, безусловно, не так сильно загружает сеть, как кэширование всего приложения. Затем javascript отвечает за предварительную загрузку каждой страницы в iframe для ее кэширования.
Загрузите index.html, затем перейдите в автономный режим и посмотрите, как работают подстраницы. тоже.
Очевидным недостатком является то, что любые ресурсы, совместно используемые страницами (например, jQuery), должны быть избыточно кэшированы.