13

ブラウザーがクラッシュしたり、スクロールがぎくしゃくしたりすることなく、モバイル デバイスで表示できるようにしたい写真のギャラリーがたくさんあります。画像を遅延読み込みするためのプラグインがたくさんありますが、メモリを節約するために表示されていないときに画像をアンロードするものはありますか?

4

3 に答える 3

17

これは、この質問に関連するLinkedIn エンジニアリング チームのブログ投稿LinkedIn for iPad: HTML5 でのスムーズな無限スクロールのための 5 つのテクニックからの引用です。

UIWebView/Mobile Safariでは、画像に厳しい制限があります。私たちのストリームは大きな画像でいっぱいなので、すぐに限界に達します。1 つのオプションは、HTML5 Canvas 要素を使用して、メモリの問題を発生させずに画像を描画することでした。ただし、非常に大きな画像をキャンバスに描画すると時間がかかることがわかったため、別のアプローチを採用する必要がありました。画像が画面から十分にスワイプされるたびに、img タグの「src」属性を非常に小さな画像に置き換えました。これにより、大きな画像のレンダリングに使用されるメモリが定期的に解放されます。また、空の画像の src 属性のバグを導入していないことを確認しました。

于 2013-04-16T13:00:12.620 に答える
1

これを行う方法はないと思います。JavaScript は、ブラウザによって管理される DOM オブジェクトへの参照のみを保持します。そのため、リソースの割り当てがいつ解除されるかを判断するのは、完全にブラウザのキャッシュ エンジン次第です。これらの決定は、このオブジェクトへの JavaScript 参照が存在するかどうかではなく、リソースが読み込まれたページがまだアクティブであるかどうかに基づいています。いずれにせよ、ブラウザは自動的にキャッシュ管理を行い、JavaScript を介して影響を与えることはできません。これは、ユーザーのファイル システムとの一種の対話を意味するためです。JavaScript では、セキュリティ上の懸念から、明示的な承認がある場合にのみ許可されます。 .

于 2012-05-23T14:22:59.727 に答える
0

これは古い記事ですが、まだ役に立ちます: http://www.vargatron.com/2010/08/ipad-html5-js-memory-management/

属性を実際の img URL (ビューポート内) またはプレースホルダー URL (ビューポート外)に置き換えるために、ビューポートに出入りする画像要素で通知されるようにイベント ハンドラーをアタッチするにsrcは、次のプラグインがあります。

http://static.pixeltango.com/jQuery/Bullseye/ http://imakewebthings.com/jquery-waypoints/

属性値を置き換えてsrcも、ブラウザーがメモリを解放することは保証されませんが、ガベージ コレクターにとっては強力なヒントになります。とにかく、画像がすぐに解放されない場合、ユーザーがスクロールして戻ることを決定した場合でも、画像はまだキャッシュにあります。

于 2013-09-26T12:32:55.577 に答える