hexo
Version:
A fast, simple & powerful blog framework, powered by Node.js.
68 lines (61 loc) • 1.67 kB
JavaScript
var path = require('path'),
fs = require('graceful-fs'),
async = require('async'),
util = require('../util'),
file = util.file2;
exports.statics = {
loadCache: function(src, callback){
var source = path.join(hexo.base_dir, src),
data = this.findOne({source: src}),
self = this;
async.auto({
mtime: function(next){
fs.stat(source, function(err, stats){
if (err) return callback(err);
next(null, stats.mtime.getTime());
});
},
check: ['mtime', function(next, results){
if (data && data.mtime === results.mtime) return callback(null, data.content);
next();
}],
content: ['check', function(next){
file.readFile(source, next);
}],
save: ['content', function(next, results){
if (data){
data.content = results.content;
data.mtime = results.mtime;
data.save();
callback(null, results.content);
} else {
self.insert({
content: results.content,
mtime: results.mtime,
source: src
}, function(){
callback(null, results.content);
});
}
}]
});
},
loadCacheSync: function(src){
var source = path.join(hexo.base_dir, src),
data = this.findOne({source: src}),
stats = fs.statSync(source),
content = file.readFile(source);
if (data){
data.content = content;
data.mtime = stats.mtime.getTime();
data.save();
} else {
this.insert({
content: content,
mtime: mtime,
source: src
});
}
return content;
}
};