2

私のWebアプリでは、MongoDBGridFSを使用してユーザーがアップロードした画像を保存しています。

サイトの残りの部分はMySQLによって管理されています。

写真テーブル(mysql内)には、ファイルオブジェクトのMongoIdを格納するための3つのフィールドがあります。

  • 小さい
  • 中くらい
  • 大きい

そこで、3つのバージョンの画像を保存します。小、中、大。

私の質問は、画像の「小さい」バージョンよりも小さいサムネイルを使用する必要がある場合(つまり、ウィジェットボックス、メッセージアバターなど)、または中程度の画像の少し小さいバージョンを使用する必要がある場合があります。 。

だから私の質問は、GridFSシステムに1つの画像を保存し、MongoIDを保存する写真テーブルに1つのフィールドを作成してから、その場で画像のサイズを変更するスクリプトを作成する方がよいでしょうか(つまり、http:// localhost / image / fetch / {mongoid}?resize = 50

それ以外の場合、私のデータベースでは、thumbnail_50、thumbnail_100、medium_300、medium_400などが必要になります。

オンザフライのサイズ変更ルートをたどることの意味は何でしょうか?それは悪い考えですか、それとも良い考えですか?あなたならどうしますか?

ありがとう。

4

1 に答える 1

4

その場でサイズ変更すると、さまざまなサイズに一度にサイズ変更して結果を保存するよりも、サーバーの CPU 負荷がはるかに高くなります。一方、事前にサイズ変更すると、GridFS に格納されるデータセットが大きくなる可能性があります。言い換えれば、それはトレードオフです。

その場でサイズを変更し、結果をGridFSに保存して、1つの画像を特定のサイズに2回以上サイズ変更する必要がないハイブリッドアプローチを検討できます。

また、HTML と CSS では、画像の表示サイズを制御するためのさまざまなオプションが使用できることも知っておく必要があります。例えば:

<img src="/path/to/image.jpg" width="50"/>

幅 50 ピクセルに比例してスケーリングされた画像になります (最新のブラウザのほとんどでは、とにかく)。widthおよびmax-widthCSS プロパティを使用して、画像サイズを制御することもできます。

私自身、保存する画像のボリュームやファイルサイズについて何も知らないので、おそらく画像が追加されたときにサイズを変更します。 GridFS のさまざまなサイズmax-width。特定のケースでわずかに異なるサイズが必要な場合に、画面上のサイズを制御するために使用します。

于 2011-09-22T14:15:18.017 に答える