来实现页面截屏功能,为了避免重复截屏就加入了锁。不知道是哪个环节有问题,求大牛看看。。
router.post('/shot', function(req, res) {
var token = req.param('token');
var url = req.param('url', false);
debug('url : ' + url);
if (!url) { res.send('must with url') }
url = decodeURIComponent(url);
var filename = '';
var uri = new URI(url);
uri.search(function(data){
filename = data['preview_theme_id'] + '.png';
});
var mongo = req.mongo;
var collection = mongo.collection('web_shots');
collection.findOne({'url_md5':filename}, function(err, doc){
if(!err && doc){
debug(JSON.stringify(doc));
return res.send(doc.content);
} else {
debug('filename: ', filename);
mongo.collection('web_shots_lock').findOne({'url_md5':filename},function(err,doc){
if(!doc) {
mongo.collection('web_shots_lock').save({url_md5:filename,created_at:new Date()},{w:1},function(){
shot.shot(url, function (err, data) {
if(!err && data) {
mongo.collection('web_shots').save({url_md5:filename,content:data,created_at:new Date()},{w:1},function(){
debug('update success!');
mongo.collection('web_shots_lock').findAndRemove({url_md5:filename},function(){});
});
} else {
mongo.collection('web_shots_lock').findAndRemove({url_md5:filename},function(){});
}
});
});
return res.status(201).end();
}
});
return res.status(202).end();
}
});
});
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.