2017-02-25 60 views
1

我目前正在開發一個類似於儀表板/ Web瀏覽器主頁的Nodejs/Express web應用程序。數據根據用戶的設置顯示。目前,我正在創建一個json文件(基於模板),當用戶註冊時。這個json文件具有我需要訪問的設置,以便在主頁上顯示信息。其中一些信息是:用於訪問天氣api(+單位,預測天長度等)的地理位置(城市+國家),tvshows列表(因此我可以從我的數據庫中獲取劇集列表)等。Express webapp如何存儲/訪問用戶設置

目前,當用戶登錄時,我正在讀這個文件大約4次。我相信這不是一個好主意,雖然現在它的工作狀況良好,但我可以看到未來的問題(當我添加更多設置和/或獲得更多流量時)。

由於webapp差不多完成了,所以我想照顧好這個。我想在幾個選項:

  1. 保存在一個會話存儲的用戶設置(例如Redis的)
  2. 保存用戶設置在Cookie(S)
  3. 讀取文件一次當用戶登錄並以某種方式緩存它

這樣做的最佳選擇是什麼?

+0

爲什麼不在db中存儲? – Daniel

+0

當我研究如何存儲用戶設置和最佳方法時,我得出的結論是沒有正確的答案。在關係型數據庫中存儲用戶設置的方法有很多(使用Postgres),但是我最終會做出很多表+關係和冗長的查詢。另一種解決方案是將信息存儲在JSON文件中。我去了最後一個,因爲它看起來更容易/更好。我錯過了什麼嗎?你是否應該切換到存儲在數據庫中? – nip

回答

0

如果您希望將此信息存儲在客戶端(因爲您提到了cookie),您可能需要consider looking into JavaScript's localStorage API(或sessionStorage,如果您希望數據在用戶關閉瀏覽器時過期)。

localStorage是一個關鍵值對(就像你用Redis得到的那樣),但是數據存儲在用戶設備本地。與任何客戶端存​​儲解決方案一樣,您不應該信任從localStorage提供的數據而無需進行某些驗證,但它是專爲此類任務設計的工具。

+0

我不確定是否存儲客戶端或服務器端。我仍在辯論這個問題。無論如何,感謝您的意見,我會看看localStorage。 – nip

+0

從我可以告訴我,我無法訪問localStorage API服務器端。至少不是直接的。我必須做出Ajax請求將數據發送到服務器。此外,我真的沒有看到Cookie和localStorage之間的任何巨大差異,所以我可能會使用cookie。 – nip