まず、私が構築しているものを説明しましょう。
D3.js Force Layout グラフがあり、これは中心に根ざし、その周りに多数のノードが広がっています。中央のノードはある種のエンティティであり、その周りのノードはルートに何らかの形で関連している他のエンティティです。エッジは実際の関係 (つまり、2 つの関係) です。
外側のノードをクリックして、ターゲット エンティティを中央に配置し、その関係をロードできます。
このグラフは、ノードをクリックするたびに中心になり、それ自体に直接関係する関係のみが表示されるという意味で「エゴセントリック」です。
私のセットアップ、それが重要な場合に備えて:
Node.js を介して API を提供しています。この API は、リクエストを巨大なデータ セットを持つ CouchDB サーバーへのクエリに変換します。
レイアウトには D3.js を使用し、jQuery と Bootstrap 以外のクライアント側ライブラリは使用していません。このキャッシュタスクに役立つものがあれば、提案を受け付けています:)
私のアイデア:
毎回グラフのいくつかのレベルを簡単に取得できます (子をリストして展開するプロセスを数回繰り返します)。ルートにロードされたデータ。これは完全な無駄のように思えますが、実際には逆方向への一歩です。この方法でさらに多くの処理を行うことになります!
取得済みのエンティティのハッシュ テーブルを簡単に維持し、そのエンティティのデータをサーバーに要求する前にリストを確認できます。実装するキャッシュ戦略に関係なく、おそらくこれを行うことになるでしょう。これは、クエリを減らすための非常に簡単な方法だからです。
では、このデータをキャッシュする方法を教えてください。
この種のキャッシングを行うために考えられる非常に効果的な戦略はありますか? サーバー側とクライアント側の両方のオプションは大歓迎です。このプロセスには大量のデータが含まれており、クエリや処理を少しでも減らすことで、私は何マイルも先を行くことができます。
ありがとう!