2011-01-02 13 views
2

MVC-3、Razor、Cを使用して開発MVC-3ユーザイメージ管理 - ベストプラクティス

私は探しているアドバイスを見つけられませんでした。私のサイトには、ユーザーがアップロードした画像が含まれています(おそらく高い数字)。これらの画像を管理するためのベストプラクティス(プレースメント、サブフォルダ内訳など)は何ですか?サイトを定期的に再公開すれば、どこに迷惑をかけないようにするのですか?

良い記事やブログ投稿がある場合は参考になります。また、誰かが追加したいアドバイスやヒントは素晴らしいでしょう。

ありがとうございました!

ロブ

EDIT

はまた、人々がホットリンクを防ぐために何をすべきかを知っていただきたいと思います。

答えて

1

実行している画像の量が多いサイトでは、すべての画像が日付フォルダ構造で保存されています。すなわち2010/Dec/31/image.jpg

これには2つの理由があります。

最初は、私のホスティングプランに付随する限られたDBスペース(200 MB)です。明らかに私がスペースのギガバイトを持っていたら、私はDBにそれらを保存していたでしょう。

第2の理由は、フォルダ内の画像の数を最小限に抑えることです。ディレクトリリストは、それに含まれているファイルが多いほど長くかかるので、24時間ごとに新しいディレクトリが私の回避策でした。

あなたは、あなたが持っているリソースや、推定される画像の数が毎日アップロードされるかについてもっと教えていただけますか?

+0

こんにちはサイコ、ご返信ありがとうございます。私はサブディレクトリルーチンに行くことになるかもしれません。これはスタートアップサイトなので、私は1日に数百人しかいないかもしれませんが、何千人もの人に成長することができます(私たちは願っています!)。私のWebホスティングプランを見て、私はdbのサイズに制限がないと私は無制限の帯域幅とストレージスペースがあることを知っている。 – Rob

1

SQL Server 2005以降を使用している場合は、FileStreamを使用することができます。ファイルのサイズが1MB未満の場合は、VARBINARY(MAX)として保存するとパフォーマンスが向上する場合もあります。データベースに格納することの最も重要な点は、トランザクションを簡単に使用できることです。

レプリケーションとバックアップについては、標準のデータベースレプリケーションとファイルのバックアップを使用できます。

1

DBにスペースがある場合は、バックアップ/リストアがはるかに簡単になるので、それをお勧めします。あなたのDBのためのスペースが限られている場合、私は単一のフォルダに1000以上のファイルを格納しませんが、フォルダ構造が動作します。だから、あなたは1つの場所に1000以上の画像とフォルダを保持しないようにフォルダを保持するのに役立つ解決策を考え出すことになります。 1日に1000枚以下のイメージがあると思うならば、サイコが示唆しているもののバリエーションはおそらくうまくいくでしょう。それは毎年のフォルダとなります。その日の画像。

ホットリンクについての質問に答えるには、リファラーウェブサイト(画像のリクエストの先頭にある)を確認し、ドメインから来ていることを確認することをおすすめします。そうでない場合は、情報を返送することも、サードパーティのサイトから画像が表示されないことをユーザーに知らせる画像を返送することもできます。

ヘッダーデータはなりすましになる可能性がありますが、第三者サイトに来るランダムな訪問者は、これを行っていないだけでなく、おそらくわからない/気にする方法です。

+0

私はホットリンクを防ぐためにIPアドレスを使って要求の起点をチェックするのが最も安全だと思います。ファンシーになりたい場合は、イメージが送信される前にウォーターマークサーバー側を追加することができます。プロセスであなたのサイトを広告します。 –

+0

@Psycho - あなたはそのIPアドレスをどのように比較しますか?ページをリクエストした最近のIPアドレスのリストを保持しますか? –

関連する問題