2009-08-06 8 views
1

私の質問は、サムネイルとストレージの表示についてです。ウェブサイトのユーザー写真を管理する最適な方法は何ですか?

写真をアップロードしてアルバムで見ることができるウェブサイトがあるとします。

写真は通常どのようにこのシナリオで保存されますか?イメージ自体は、通常、データベースに保存されているファイルパスですか?

写真は大きく、あなたがサムネイルを表示したい場合は、それが優れているに:

  • 要求された場合のみで拡大表示、画像と縮小サイズの画像のコピーを保存しますか?
  • HTMLを使用してサイズを縮小しますか?
+0

保管質問のチェックhttp://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nayまた、画像のサムネイル版を保存します。 – Favio

答えて

4

ほとんどの場合、画像をデータベースに保存することは悪い考えです。 BLOBは実際にデータベースを激しいものにする可能性があります。また、異なるドライブにストレージを広げることもできません。ファイルが別々の場合は、1つ以上の別個のイメージサーバーを使用して、メインの動的サーバーの負荷を軽減することもできます。私の推奨事項は次のとおりです。

  • データベーステーブルには、イメージが存在するディレクトリとイメージ名の両方の列があります。そうすれば、画像の保存場所を変更したり、ドライブをラウンドロビンしたり、後でストレージを追加したり、新しいストレージに新しいイメージを入れたりすることができます。別のフィールドにパスとファイル名を格納すると、あるディレクトリから別のディレクトリにイメージを移動するのが簡単になります。

  • サムネイル画像を生成して、ネットワーク帯域幅を削減し、アプリケーションをより高速に実行したいのは間違いありません。ただし、必要に応じてサムネイルを生成したり、システム負荷が低い場合にサムネイルを生成することができます。 Linuxを使用している場合、画像の自動バッチリサイズでImageMagickが優れています。絶対量の代わりにパーセンテージでサイズを変更することもできます。

+0

https://imageresizing.netおよびhttp://imageflow.ioは、オンザフライでサムネイルを生成するのに十分高速です(単一ソースイメージング)。バックエンドでは、ネットワークストレージやあらゆる種類のBLOBストレージを使用できます。 –

0

TikiWikiなどの一部のソフトウェアは、写真をデータベースに保存します。また、サムネイルサイズの写真をデータベースにキャッシュします。

他のソフトウェアは、それをディレクトリに保存します。これがGallery2が動作する方法です。私は、ディレクトリのアプローチがよりスケーラブルであることを発見しました。元のサイズとは異なるサイズが要求された場合は、通常、ImageMagickを使用して写真のサイズを変更し、サイズ変更された写真のコピーを保存します。

もう1つの方法は、写真をS3のようなサービスに再アップロードし、写真をローカルに保存しないことです。

0

これはよくある質問であり、基本的な答えはそれが依存するということです。あなたはより多くの情報を提供する必要があります。どのデータベースを使用する予定ですか? SQL Server 2008には、FILESTREAM機能を使用してこのシナリオを処理するためのいくつかの新機能があります。一般的に私はデータベースに保存することをお勧めしますが、設計やアクセスの要件について考えずにそれらを詰め込むだけでは、写真の数が増えるほどパフォーマンスが低下する可能性があります。

0

あなたのWebサーバが常にイメージをホストするファイルシステムにアクセスできることを確実に確信している場合は、そのルートに進みます。多分。

しかし、Webサーバーのハードドライブに空き領域がないか、複数のWebサーバーを実行する必要があるため、いつでもイメージサーバーを作成する必要があると思われる場合は、問題を救ってデータベースに保存してください。ファイルシステムに格納することの難しい部分は、ネットワークを横断するためのセキュリティ要件です。

また、すべてのデータベースサーバーが同じように作成されるわけではありません。 SQL 2008では、実際にローカルファイルシステムにイメージを格納するFILESTREAMデータ型が導入され、dbサーバーを介してすべての読み取り/書き込みアクセスが可能です。これにより、ストレージに入っている間に受信ファイルに対してウイルススキャナを実行できるという利点があります。

Oracleはしばらくの間、すばらしいファイル格納機能を備えています。 MySQL?私は試してみたいとは思わないが、あなたは大丈夫かもしれない。

2番目の質問については、画像とともにサムネイルを保存してください。このプロセスは、イメージごとに1回だけ発生し、プレゼンテーションの帯域幅を節約します。 HTMLを使用してイメージのサイズを縮小すると、実際にはクライアントでは何も起こりません。

関連する問題