我必须在快速应用程序中创建 /:username 类型的路由。我可以想到两种方法,我想知道哪种方式更优化性能。第一个是通过调用 db 来动态提供路由服务,如果存在用户名来提供所需的配置文件。第二个是创建一个函数,以便在创建用户时将其个人资料 url 硬编码到应用程序中,然后在删除用户时将其删除。这样,每当请求这种类型的 url 时,就不会调用数据库。所以问题是第二种情况下的性能问题是什么,如果有的话,每种情况的优缺点是什么,主要是性能方面的?
问问题
1367 次
2 回答
0
做第一个。我不能谈论性能(但我觉得从长远来看第一个会更快),但是如果你的应用程序(不是说这会发生)像 Facebook 一样受欢迎,然后你有 1 000 000 000 会发生什么您的快速应用程序中的路线?即使尝试启动您的应用程序也会变得可笑。
数据库可以处理这个问题,如果你真的很担心,你可以保留已经检查过的用户名的缓存。第一次检查时添加它们,如果用户名被删除,则删除它们。
我现在也想到了;无论如何,您是否不必执行几乎相同的查询来获取信息以填充配置文件?如果您建议在创建帐户时为每个配置文件创建静态页面,请不要这样做。这就是数据库的设计目的,因此以这种方式使用它们是非常安全的。
于 2013-03-08T23:47:18.477 回答
0
我只是使用 /:username 并将它放在我的其他路线下方,因此它不会取代其他页面,例如 /login
如果该用户名没有用户,那么我将他们重定向到主页。
使用猫鼬,您可以执行以下操作:
//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
});
于 2013-03-09T00:24:40.073 回答