2012-01-12 6 views
9

私の以前のWebアプリケーションでは、ユーザーが1つの「ページ」(ページリロードなし、新しいdivのみ)から別の「ページ」への移行を行ったときに、創造+は新しいものを示しました。ユーザーがアドレス管理からイベント管理に戻ったときに、現在のdivを非表示にして、すでに使用されているdivを再度表示するだけでした。もちろん、これはメモリが必要ですが、より高速です。Javascript Webアプリケーションのメモリ対スピード

私の新しいWebアプリケーションでは、Backbone.js、Require.js、jQueryを使用しています。私のすべてのモジュールはAMD(jquery 1.7.1、backbone.js 0.5.3-optamd3、...)です。

Derick Baileyさんの興味深いブログ(http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/)を読んだ後で、新しい「ページ」に移行する前に自分のdivを整理してから、ユーザーが戻った場合に再作成します。

同様に、requirejs amdモジュールに関しては、私は以前のメモリ戦略よりもスピードが速かったのです。Webアプリケーションナビゲーションの中心は私の唯一のルータオブジェクトです。ユーザーが最初に「ページ」/機能を選択した場合、amdモジュール(それはbackbone.jsビュー・オブジェクト)とそのすべての依存関係をrequireコマンドでロードし、この結果のビュー・オブジェクトをそのモデル・オブジェクトとともに格納します)を使用して、ルータオブジェクト内の配列で使用することができます。ユーザーが戻ったとき、私は格納されたビューオブジェクトを取り出し、ビューを再レンダリングします。

私はこの動作から、常に(キャッシュから)モジュールをリロードするように切り替えると思いますが、わかりません。

最善の道を行くために、私はより良い理解を得たいと2つの質問お願いしたいと思います:

  1. 私は5つのAMDモジュールを持っています。ユーザーが機能を必要とするときは、モジュールをロードして実行し、結果としてbackbone.jsビューオブジェクトを取得します。これをルータオブジェクトの配列に格納します。すべてのAMDモジュールには、Backbone.js(AMDバージョン)が依存しています。ユーザーが5つの「ページ」をすべて訪問し、すべての5つのビューオブジェクトが配列に格納されると、すべてのbackbone.js依存関係がキャッシュからフェッチされて新たに実行されるため、5つのコピーがbackbone.jsになります。ガベージコレクタはそれを削除しましたか?
  2. 他のWebアプリケーション開発者はどのようにこの速度のメモリ戦略を考えますか?

は(http://stackoverflow.com/questions/7866971/how-does-amd-specifically-requirejs-handle-dependancies-across-multiple-module)私はstackoverflowの上で同様の問題を発見した 今日を続けました。 答えは: "これは一度だけロードされ、上記のモジュールの両方がは同じモジュール値 ..."を取得します。

したがって、すでにロードされた+実行されたamdモジュールの結果を後で使用するために保存することはあまり面倒ではないようです。

ヴォルフガング

答えて

2

キャッシュのすべてのもの(それが複数回使用される可能性があります)。 (Canvas/ImageDataに書き込む)。 フレームワークのコピーは1つだけメモリに保存してください。さらに多くのことを心配している場合は、すべてのAMDが単一のソースバックボーンを使用するように書き直してください。

メモリは、です。ブラウザのキャッシュのための

  • にexternあなたのJSファイル:

    あなたはより良いスピードをしたい場合。

  • 利用のlocalStorage
  • ユーザー
  • で最も計算がサーバーを最小化し、要求フローに
を合理化します
関連する問題