2017-02-28 6 views
0

私は、その人のプロフィール写真を表示できるユーザープロファイルページを持つ.Net/SQL Serverサイトを構築していますそれが存在する場合。私は写真をサーバのローカルフォルダに保存しています。各ユーザーには、DBによって生成されたユーザーIDを使用して名前が付けられた独自のサブフォルダーがあります。写真ファイルは常にprofile.jpgと呼ばれます
DBには私はプロファイルデータを格納するためのUserテーブルがあり、profile_photo_existsというカラムを追加してプロファイル写真が存在するかどうかを考えていました。DBテーブルの列にファイルへの参照を格納するか、ファイルが存在するかどうかを確認するほうがよいですか?

私の質問は、写真ファイルがあるかどうかを確認するためにユーザーのフォルダをチェックするサーバー側のコードを取得するだけで、このprofile_photo_exists列が冗長であるかどうかです。私は、毎回ファイルシステムをチェックすることでパフォーマンスが悪くなる可能性があるので、DBカラムを持つ方が良いと考えていました。私の問題はこれはデータの重複のように思えますが、同期が外れてしまうのを恐れています。例:フォルダにファイルがありませんが、DBにはフォルダがあります。

カラムを保持する理由は他にありますか?

+2

イメージがDBに格納され、IDを介してユーザーアカウントに関連付けられている方が良いでしょうか? –

+0

私は現在AJAXサイトを構築しており、私の計画はすべてをDBに保存しています。私はasp Webサービス関数を呼び出すことでこれをやっています。 –

+0

それを行うことの問題は、拡大縮小しないということです。あなたのイメージをCDNにしたいのであればどうですか?または他の何らかの外部記憶装置を含む。 – MakkyNZ

答えて

2

ファイルが存在するかどうかを確認するためにSystem.IOを使用した場合のパフォーマンスへの影響は非常に小さいです。あなたが言及したように、フラグ "profile_photo_exists"を格納することの問題は、このフラグをデータベースと同期させなければならない - 不要な複雑さのように思えます。

私がやることは、ユーザーのユーザーIDを使用してアップロードしたプロフィール写真を保存することです。 Ex。 user-id.jpg「65d476eb-f52c-4faf-bec2-93073daad6ec.jpg」それはプロフィール写真の名前を正規化するのに役立ちます。

次に、カスタムプロファイル画像を確認する単純なロジックがあります。存在しない場合は、「default.jpg」をロードします。

また、各ユーザーフォルダにdefault.jpgを保存する必要があるかどうかについても考えています。ユーザーのカスタムプロフィール写真が見つからない場合は、default.jpgを1つ保存しないでください。 default.jpgを1つ持つことで、デフォルトのプロファイルイメージを変更したい場合や、サーバーのスペースを節約することができます。

ちょうどmy $ .02。私はこれが役立つことを願っています

+0

これはまさに私がそれを構築する方法です。ファイル名としてuseridを使用すると、イメージの場所を取得するために不要なdbコールが削除されます。 – MIKE

関連する問題