我终于解决了这个问题。
我很懒,我希望我的服务器为我动态生成我的缓存清单。
此模块导出是对我的服务器上缓存清单请求的回答。
谢谢你关于两个请求,尖,所以这里的我如何与节点做到了:
//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);
}
};
这里的窍门是不能重建缓存舱单的每个请求。基本上,只有在用户第一次登陆应用时,用户才会获得清单,如果它已更改,或者您可以强制其通过客户端或服务器端代码过期。
第一次访问将始终生成最新的清单,然后您可以做任何你想做的事情。
我有错误,因为我(虚拟)生成缓存清单文档与每个请求,因为铬做备份第二次请求它不匹配和失败。
Danm ...
我有同样的问题,但我不明白您的解决方案... – Sucrenoir 2012-12-14 15:03:27
我也想你是如何解决这个更明确的解释。我使用node.js并表达并动态生成我的清单文件。 – mattdlockyer 2013-01-25 17:14:39
这整个时间戳方法并不总是可用的,请参阅下面的解决方案。 – mattdlockyer 2013-01-26 02:32:43