2013-03-08 67 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 
});