Я наконец решил это с моей стороны.
Я ленивый и хочу, чтобы мой сервер динамически генерировал мой кеш-манифест для меня.
Этот модуль экспорта является ответом на запрос кеш-манифеста на моем сервере.
Спасибо за подсказку о двух запросах, вот как я это сделал с узлом:
//OFFLINE CACHE
var cacheManifest = undefined;
exports.cache = function(req, res){
if (!cacheManifest) {
var fsutils = require('modules/utils/fsutils');
//get the files and generate the output for cache.manifest
fsutils.getFiles('/public', function(files) {
var out = 'CACHE MANIFEST\n\ ';
var len = files.length;
for (var i = 0; i < len; ++i) {
out += files[i] + '\n\ ';
}
//setup for second request
cacheManifest = out;
//send output
res.header('Content-Type', 'text/cache-manifest');
res.end(out);
});
} else {
console.log('cache is cahced');
res.header('Content-Type', 'text/cache-manifest');
res.end(cacheManifest);
}
};
Хитрость в том, чтобы не перестраивать ваш кеш-манифест с каждым запросом. По сути, пользователь получает манифест только в первый раз, когда он попадает в ваше приложение, если он изменился или вы можете принудительно истечь его через клиентский или серверный код.
При первом посещении всегда генерируется последний манифест, после чего вы можете делать все, что захотите.
У меня была ошибка, потому что я (идиотски) генерировал документ с манифестом кэша с каждым запросом, и поскольку chrome выполняет резервное копирование второго запроса, он не соответствовал и не выполнялся.
даН.м. ...