2011-01-16 19 views
1

可能性の重複:私はプロフィール画像を保存する必要が
Storing Images in DB - Yea or Nay?プロフィール写真を保存しています。 (データベースまたはファイルシステム?)

。それらの多く。

データベースに保存する必要があるかどうかわかりません。私はそれが最初から良いアイデアかどうか、あるいはそれらをサーバー上の別のディレクトリに保存して、HTAccessでそれらにアクセスできないようにする必要があるかどうかはわかりません。

しかし、私はHTAccessに精通しておらず、スニペットを使用してフォルダへのアクセスを許可していないときは、まったく機能していません。

私はwinhost.comを使用して自分のサイトをホストしていますので、HTAccessは動作すると思います。

1人のサーバーに数万のプロフィール写真を保存する方が良い方法を提案する人はいますか?私はGoogleで見つけた多くのブログやフォーラムの投稿などを読んだことがあり、その半分が1つのことを示唆していてもう少し混乱しています。

答えて

1

トレードオフがあります。状況とニーズによって異なります。それぞれの利点は

ファイルシステム

  • パフォーマンス、特にキャッシングやI/Oなどが

  • 簡単には複数のWebサーバにスケールアウトするには、データベースが
  • 簡単管理(バックアップ、セキュリティなど)

私はあなたがMySQLを使用していると推測していますが、SQL 2008データベースを持っている可能性は低いので、FileStream in this SOの記事を見てください。これは両方の世界の中で最高のものです。

+0

ありがとう、ちょうど私が必要とするリンクの種類!私はMySQLを使用していますが、それは初期の段階であり、SQL 08に関するより多くの経験があるので、私は変更することができます。 –

0

私は間違いなく、データベースのイメージパスのみを格納するためのルートです。画像データを保存すると、サイトが遅くなり、システムに余分な負担をかけることになります。

唯一のケースは、あなたがサイトを動かすことを計画しているならば、データベース内に画像データを保存することに利点があると思います。その後、ファイルパスなどを気にする必要はありません。

+0

あなたの答えをありがとう:) –

2

個人的な経験によると、データベースにたくさんのイメージを保存すると、データベースのバックアップが非常に遅くなります。反復可能なテストを実行したり、DBスキーマを更新したり、一般的な場合と同様にアドホックバックアップを取ったりする場合には、それは苛立つ可能性があります。また、データベースによっては、BLOBの格納(必然的に、固定長ではない行の格納を意味します)は、テーブルのクエリを非常に遅くする可能性がありますが、これは適切なインデックス付けで簡単に修正できます。

ファイルシステムに保存し、あなたのウェブサーバで直接提供する場合、ログインユーザーのみに表示させるには、適切なアクセス制御方法があります。それはアプリケーションの設計に依存し、問題ではないかもしれません。

他の二つのオプション:

  • それは例えばできるように、あなたは、ファイルシステムに保存し、アプリケーションのページでそれらを提供することができますイメージを取得してクライアントに送信する前にアクセス制御をチェックしてください。

  • ウェブサーバーがファイルシステム上のファイルを提供する場合、X-SendFileヘッダーを使用できます。アプリケーションページは、Webサーバーにフェッチするファイルを通知し、Webサーバーはファイルを取得して送信します。たとえば、アプリケーションを使用する場合、アプリケーションとイメージファイルは異なるマシン上に存在する可能性があります。 FastCGIであり、イメージはFastCGI接続を介して送信されることはありません。あなただけよあなたがファイルを送信するために任意のプログラム的な方法を記述する場合は、画像がブラウザでキャッシュできるように、追加のロジックを追加する必要があります、または - あなたはまた、cacheingを検討する必要があります

画像を何度も何度も繰り返して配信し、帯域幅のコストを上げます。

+0

あなたの答えをありがとう:) –

関連する問題