我终于解决了这个问题。
我很懒,我希望我的服务器为我动态生成我的缓存清单。
此模块导出是对我服务器上缓存清单请求的回答。
感谢有关这两个请求的提示,所以这是我使用节点的方法:
//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 执行了第二个备份请求,因此它不匹配并且失败。
丹...