我正在构建一个.Net / Sql Server站点,该站点具有一个用户个人资料页面,可以显示该人员的个人资料照片(如果存在)。我将照片存储在服务器上的本地文件夹中。每个用户都有自己的子文件夹,使用其生成的用户ID命名。并且照片文件总是被称为profile.jpg
在DB中,我有一个User表来存储配置文件数据,我正在考虑添加一个名为profile_photo_exists的列来指示是否存在配置文件照片。
我的问题是,当我可以获取一些服务器端代码来检查用户的文件夹以查看是否存在照片文件时,这个profile_photo_exists列是多余的。我认为最好有一个DB列,因为每次检查文件系统可能不是那么高效。我的问题是,它似乎是一个重复的数据,我害怕它不同步。 E.g文件夹中缺少文件,但数据库说有一个。
还有其他充分理由保留专栏吗?
答案 0 :(得分: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。我希望这会有所帮助。