イメージにすべてを組み合わせることはお勧めしません。ファイル全体がダウンロードされるまでイメージの初期外観が遅れるためです。目に見えるものができるだけ早くロードされ、全体的なスループットのために残りの部分が最適化されるようにする方がよい
イメージがそれぞれ50KB未満の場合は、スプライトイメージとして組み合わせることは意味がありますが、一度に10個ずつ組み合わせることをおすすめします。イメージが小さい場合、それぞれ5KBのように、一度に30個は合理的です。
現在地ボトルネックのシリーズが心配するんだ程度
- HTTPオーバーヘッドと正しいディスクキャッシュとエッジキャッシングと解ける同時接続制限(スプライト画像はこれで助ける)
- サーバーのスループットのオーバーヘッド( )
- ブラウザのレンダリングのオーバーヘッド(スプライトはアイコンやサムネイルに最適ですが、巨大ではありません.1メガピクセル以下に抑えてください)。
jpeg形式で結合すると圧縮が改善されることがありますが、それ以外の場合はアーティファクトが発生します。たとえば、ラインアートと写真を混在させることは悪い考えです。 Jpegはラインアートでが悪いです。必要に応じてPNG、さらにはPNG-8を使用してください。場合によっては、JPEGが100%の品質でGIFまたはPNGバージョンよりも小さくなることがありますが、ほとんどの場合、ラインアートはPNG形式で保存するのが最も適しています。
これらの写真のIDがあり、ディスクキャッシュを使用してダイナミックルートを計画している場合は、タスクが大幅に簡略化されます。
ライブラリImageResizerライブラリは、ダイナミックパイプラインとディスクキャッシングシステムに非常に簡単に「プラグイン」させます。
この場合、implement IVirtualImageProvider
とIVirtualBitmapFile
になります。ビットマップを生成し、パイプラインに残りの部分を処理させる簡単な例については、Gradient pluginを参照してください。
URL構文を定義し、FileExistsとGetFileメソッドでそれを探す必要があります。 /combine-images.ashx?idlist=34,56,79,23 & dir = horizontal & width = 50 & height = 50のようなものです。
次に、それぞれの画像をロードし、Managed APIでビットマップインスタンスにサイズ変更し、割り当てたキャンバスに描画する必要があります。
ほとんどのボトルネックは、おそらくSQLから画像を取り込むことになります。サーバー上で制限されたRAMを使用している場合は、並列アプローチよりも安全な方法があります(つまり、SQLから一度に1つのイメージを取得し、サイズを変更して描画し、データを破棄します)。あなたのソースイメージが小さければ、マルチスレッドapprachは大丈夫かもしれません。ディスクキャッシュがあっても速くする必要があることを覚えておいてください。要求が30秒後にデフォルトになるためです。正常に終了すると、空のディスクキャッシュを使用して2秒以内に10個のイメージスプライトを提供できるようになります。キャッシュされると20ミリ秒になります。
これはちょっと圧倒しているようですが、私はcustom plugin developmentを提供していますが、キューがあります。
リクエスト1ファイルあたりのアプローチには多くの利点があり、Spriteバンドワゴンでホッピングする前に、ImageResizerのディスクキャッシュとSqlReaderプラグインを試してみる価値があります。間違ったアプローチだと言っているわけではありませんが、キャッシュされていないMVC + SQLは、貢献する可能性のあるオーバーヘッドを増やす可能性があります。
スープされた刃先を試してみる前に、私たちが投稿したい4Dコードに折りたたまれて、まずScottのソリューションを試してみて、それがあなたのために働くかどうかを見てみましょう。 –