この時点で、私はこの問題を解決するために2つのオプションを見つけました:すべての画像の初期srcがデータベース64の空白の画像になる
このオプションを使用すると、最新のブラウザーが必要になるだけでなく、ブラウザーが画像を生成するために画像データをbase-64でデコードする必要があるため、クライアント側の速度が低下する可能性があります。
すべての画像の最初のソースは、空白の1x1画像のURLになります
すべての画像スロットの空白の画像URLがまったく同じURLであり、HTTPヘッダー「cache-control」で定義された長いキャッシュライフタイムを持っている場合は、問題ありません。これの問題は、新しい画像ファイルが読み込まれると、画像の四角が新しいサイズにジャンプするため、ユーザーエクスペリエンスがそれほど良くないことです。
ほぼ完璧なアイデアはこれです...
ページが起動したら、各画像に対応できる固定サイズのボックスを含むグリッドを表示します。グリッド全体が画面に収まらなくても問題ありません。次に、HTMLのロード後に実行するJavaScriptを作成し、そのJavaScriptで新しい画像要素を作成してグリッドの各セルに添付し、画像のソースを正しい画像ファイルに設定します。最初の画面がいっぱいになるまでこれを行います。次に、JavaScript内でのスクロールを検出し、スクロールが発生したら、新しいセルに対して上記のプロセスを繰り返します。
ここで、最高のものを必要とし、品質が大きな問題ではない場合、私が推奨すること(私も自分のサイトに実装しました)は、グリッドを構築し、そのグリッドの背景画像が画像の正方形としてフォーマットされたすべての画像のスプライトシート。すべての画像に1つのリクエストが必要なため、この方法は柔軟で読み込みが高速です。
これは、高速ルートを使用する場合に使用するテンプレートHTMLです。2つの要求のみが行われます。HTMLコードと1つの画像。このコードでは、シートの各画像は幅100ピクセル、高さ200ピクセルであり、各画像は隙間なく互いに完全に並んでいると想定しています。
<html>
<head>
<style type="text/css">
#imagegrid {background-color: black; background-image:url('http://example.com/url/to/imagesheet.jpg');}
A {display:block;width:100px;height:200px;margin:10px;float:left;}
#image1{background-position: 0px 0px}
#image2{background-position: 100px 0px}
#image3{background-position: 200px 0px}
...
#imageN{background-position: XXXpx 0px}
</style>
</head>
<body>
<div id="imagegrid">
<a href="image_one.htm" id="image1"></a>
<a href="image_two.htm" id="image2"></a>
<a href="image_three.htm" id="image3"></a>
...
<a href="image_N.htm" id="imageN"></a>
</div>
</body>
</html>
私のコードでは3つのドットを追加しました。つまり、スプライトシートに画像の行が1つしかない場合は、番号を増やし、位置を毎回100ずつ増やすことで、画像を追加し続けることができます。また、Operaなどの一部のブラウザーでは、バックグラウンドの位置の値の前に負の符号を追加して、それらを機能させる必要がある場合があります。