2017-02-28 26 views
0

我正在構建一個.Net/Sql Server站點,該站點具有一個用戶配置文件頁面,可以顯示該用戶的個人資料照片如果存在。我將照片存儲在服務器上的本地文件夾中。每個用戶都有自己的子文件夾,用他們的數據庫生成的用戶ID命名。並且照片文件總是被稱爲profile.jpg
在數據庫中我有一個用戶表來存儲配置文件數據,我正在考慮添加一個名爲profile_photo_exists的列來指示是否存在配置文件照片。在數據庫表列中存儲對文件的引用或僅檢查文件是否存在更好

我的問題是,這是profile_photo_exists列冗餘,當我可以得到一些服務器端代碼來檢查用戶的文件夾,看看有沒有照片文件。我在想,最好有一個DB列,因爲每次檢查文件系統可能都不是那個性能。我的問題是,它似乎是重複的數據,我害怕它不同步。例如,該文件夾中缺少文件,但數據庫說有一個文件。

有沒有其他很好的理由來保持專欄?

+2

如果圖像存儲在數據庫中並通過ID綁定到用戶帳戶,會更好嗎? –

+0

我目前正在構建一個AJAX網站,我的計劃是將所有內容存儲在數據庫中。我通過調用asp Web服務函數來完成此操作。 –

+0

這樣做的問題是它不能縮放。如果你想把你的圖片轉換成CDN呢?或一些其他外部存儲。 – MakkyNZ

回答

2

使用System.IO檢查文件是否存在的性能影響非常小。就像你提到的那樣,存儲標誌「profile_photo_exists」的問題是不得不將這個標誌與你的數據庫保持同步 - 看起來像是一個不必要的複雜因素。

我可能會做的是保存上傳的個人資料圖片使用用戶的用戶ID。防爆。 user-id.jpg「65d476eb-f52c-4faf-bec2-93073daad6ec.jpg」。這將有助於規範化配置文件圖片的名稱。

然後有一些簡單的邏輯,檢查自定義配置文件圖片,如果它不存在加載「default.jpg」。

我還會考慮是否需要在每個用戶文件夾中存儲default.jpg - 看起來多餘?爲什麼不只保存一個default.jpg,以防您找不到用戶的自定義配置文件圖片?如果您想要更改默認配置文件映像並佔用較少的服務器空間,則擁有一個default.jpg可以更輕鬆地進行操作。

只是我的.02。我希望這有幫助。

+0

這正是我如何構建它。使用用戶名作爲文件名刪除不必要的數據庫調用,以獲得圖像的位置。 – MIKE

相關問題