2013-03-08 65 views
0

我必须在快速应用程序中创建类型为/:的用户名的路由。我可以为此考虑两种方法,我想知道哪些更适合性能优化。首先是通过调用db来动态地为路线服务,如果用户名存在以服务所需的配置文件。第二个是创建一个函数,以便在创建用户时,他的个人资料URL被硬编码到应用程序中,然后在删除用户时删除。这样,每当请求这种类型的URL时,就不会有对db的调用。所以问题是第二种情况下的性能问题会是什么,如果有的话,每种情况下的优缺点是什么,主要是性能方面的问题?使用快递的node.js中的动态路由性能

+0

我不认为蒙戈将受到影响,如果你会使用请求/搜索某个ID:用户名/姓名什么的。您可以在会话中缓存在线用户,也可以在Redis中稍后再说。 – 2013-03-08 23:45:01

回答

0

做第一个。我不能说话表现(但是我认为从长远来看,第一个会更快),但是如果你的应用程序(不是说这会发生)会像Facebook一样受欢迎,那么你会得到1 000 000 000你的快递申请路线?即使试图启动你的应用程序也会变得荒谬。

数据库可以处理这个问题,如果你真的担心它,你可以保留已经检查过的用户名缓存。首先检查它们时添加它们,如果用户名被删除,则删除它们。

它现在也出现在我身上;你不需要执行几乎相同的查询来获取信息来填充配置文件吗?如果您建议在创建帐户时为每个配置文件创建静态页面,请不要这样做。这是数据库设计的目标,因此以这种方式使用它们是完全安全的。

+0

以后也发生在我身上,我以任何方式查询数据......谢谢,我不知道它是如何来到我的,但我真的想要对性能的意见,我认为你一定是对的......谢谢。 .. – anges244 2013-03-09 00:13:11

0

我简单的使用/:用户名和我有它我下面的其他途径,所以它不”取代其他网页像/登录

如果对于输入的用户不的话,我将其重定向到主页。

使用猫鼬,你可以做这样的事情:

//app.js 
app.get('/:username', routes.profile.get); 

//route handler 
User.findOne({ username: req.params.username}, function(err, owner){ 
    if (!owner) { 
     req.flash('error', 'Woops, looks like that account doesn\'t exist.'); 
     res.redirect('/'); 
    } 

    //do something with owner 
});