0

我必须在快速应用程序中创建 /:username 类型的路由。我可以想到两种方法,我想知道哪种方式更优化性能。第一个是通过调用 db 来动态提供路由服务,如果存在用户名来提供所需的配置文件。第二个是创建一个函数,以便在创建用户时将其个人资料 url 硬编码到应用程序中,然后在删除用户时将其删除。这样,每当请求这种类型的 url 时,就不会调用数据库。所以问题是第二种情况下的性能问题是什么,如果有的话,每种情况的优缺点是什么,主要是性能方面的?

4

2 回答 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 回答