問題タブ [lazy-loading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - サムネイル画像を遅延生成するにはどうすればよいですか?
背景として、 Rob Conery の Storefrontモデルに大まかに基づいたデータ レイヤーとサービス レイヤーがあり、Rob のように、私のドメイン オブジェクトの多くは と でチェーンされておりLazyList<>
、LazyItem<>
Linq2Sql が提供する遅延実行をLazy*
利用しています。この素晴らしいデリゲート アプローチIQueryable<T>
ではなく。
だから私はこのようなオブジェクトグラフを持っています(基本的に、各アクティビティには多くの画像のフォトギャラリーが必要です-サムネイルとフルサイズの写真):
型にはGallery
Images プロパティがあるLazyList<PhotoGalleryImage>
ため、IList<PhotoGalleryImage>
その LazyList が表示されInner
ます。各PhotoGalleryImage
アイテムには、FullImage
プロパティとThumbnail
プロパティがあり、両方ともタイプがImage
です。
rez でアップロードされた完全な写真がPhotoGalleryImage.FullImage
プロパティに保存され、最初はThumbnail
プロパティがNull
. 私が求めているのは次のとおりです。Thumbnail
プロパティに初めてアクセスしたときにNull
、サービス レイヤーで Thumb を生成し、それを DB に永続化してから、Image
小さい写真であるインスタンスを返します。フルサイズの画像からサムネイルを作成するためのすべてのコードがあるので、ここでは問題にしません。
私が理解できないのは、Thumbnail
(私のアーキテクチャコンテキストで) プロパティの最初のアクセスをキャッチしIQueryable<>
、リポジトリ (DAL) ではなくサービス層にサイズ変更をさせる方法です。サービス (ビジネス) レイヤーがこの機能の決定に責任を負うべきだと強く感じていますが、それを機能させる方法がわかりません。
現在、リポジトリ内のドメイン クラスから Linq2Sql クラスへのマッピングは、私が参照するこの「最初のアクセス」を識別するのに適した場所になると考えていますが、下位層がサービスを呼び出す方法がわかりません。レイヤーを作成してシュリンクを実行します (または、シュリンクが可能である場合でも、シュリンクを実行する必要があります)。
たぶん、私の設計により、Repos に変換を行わせるように制限されているのでしょう。たぶん、サービス層にこのロジックをまったく実行させたくないはずです。たぶん、私のデザインは本当に恐ろしいので、この混乱に直面するべきではありません.
助けてください。すべてのフィードバックをお待ちしております。
java - パフォーマンスを向上させるために遅延ロードを行うかどうか
システムのパフォーマンスを向上させるために、遅延読み込みを全面的に使用する必要があることが提案されています。これは、「mappedBy」プロパティを使用した OneToOne マッピングを @OneToMany マッピングに変更することです。これは、アプリケーションの速度低下につながるデータベースからの不要なデータのロードに対処して停止するためです。
多層システム (基本的に 2 層) を実行します。JSF を使用するフロント エンドと、ビジネスおよびデータベース アクセス レイヤーを含むバック エンドがあります。フロントとバックはビュー EJB と通信しますが、EJB には実際のロジックはありません。使用されるその他のテクノロジー - Spring および Hibernate
さて、トピックについて読んだ後、遅延読み込みの使用は、正しく適用する必要があるという点で特効薬ではないようです。遅延読み込みごとに、Select ステートメントが発行されてデータがフェッチされます。フロントエンドが遅延ロードされるプロパティにアクセスし、セッション/接続がバックエンドで閉じられた場合、null が返されるという問題もあります。
上記は正しい懸念ですか?
では、遅延読み込みソリューションまたはパフォーマンス改善を実装するための最善のアプローチ/プラクティスは何ですか? 可能な限り、データ モデルをやり直さないことが望まれます。
最初は、DBA グループと協力して、2 つのシステム間で何が起こっているか、クエリがどのように見えるか、データをどのように使用しているかなどの理想を把握することでした。問題点を特定し、Hibernate オブジェクト/クエリを調べて、改善するのが一番です。また、フロントエンドを調べて、データが背面から前面に渡されて表示される内容と方法を決定します。
良いアプローチ/他のアプローチ?
java - オブジェクトを休止状態からメモリにプルするにはどうすればよいですか。セッションの問題が発生しています
私は、メモリ内データを改造しようとしているかなり巨大なプロジェクトを持っています。基本的に、プリミティブを含むオブジェクトの大きなコレクションと、休止状態に存在するその他のオブジェクトがあります。非 dao コードの大部分は、ハイバネートによる遅延読み込みに依存して、オンザフライでオブジェクトをハイドレートします。ただし、すべてがメモリに存在するため、オブジェクトが読み込まれず、休止状態の遅延読み込み例外が発生します。
ハイバネートにディップしてハイバネート オブジェクトを手動でハイドレートすることで、ハイバネート レイジー ロードを手動で実装することもできますが、そのオブジェクトのオブジェクト グラフは巨大で、初期化と設定が必要な数百のタイプが含まれています。これは実用的ではないようで、この問題に対する実行可能な解決策を探しています。この種の問題または同様の問題に関連するヒント、ヒント、解決策、またはストーリーを誰かが持っている場合、私は非常に感謝しています.
どうもありがとう。
ruby-on-rails - ActiveRecord と Rails を使用して、熱心に読み込まれた条件を後で遅延読み込みにする方法
まず、いくつかのコードを示します。
OK、後でコントローラーで、すべての従業員を正しく検索したいと思いました。結合と条件付き検索でそれを行うのに役立つように、名前付きスコープを設定しました。しかし、問題はそのユーザーの役割をすべて表示したいビューにありますが、従業員の役割のみが表示されます。
とにかく、「user.roles」と言って、既に熱心にロードした後にビューに遅延ロードすることはできますか?
javascript - ロックアップせずにLazyLoadedオブジェクトを待機していますか?
リクエストに応じてスクリプトを遅延ロードするコードはすでにあります。私の問題は、オブジェクトが利用可能になるまで特定のコードを実行するのを待っています。setTimeout()は実行をブロックしないため、使用できません。
では、ブラウザをロックせずに、ロードを「待機」するための良い方法は何でしょうか。
繰り返しますが、raw setTimeout()を使用することはできません。
javascript - Javascriptファイルを動的にロードするJQuery
ユーザーが特定のボタンをクリックした場合にのみロードしたい非常に大きなJavaScriptファイルがあります。フレームワークとしてjQueryを使用しています。これを行うのに役立つ組み込みのメソッドまたはプラグインはありますか?
詳細: TinyMCE javascript ファイルをロードする [コメントを追加] ボタンがあります (すべての TinyMCE を 1 つの JS ファイルにまとめました)、tinyMCE.init(...) を呼び出します。
誰もが「コメントを追加」をクリックするわけではないため、最初のページの読み込み時にこれを読み込みたくありません。
私はただできることを理解しています:
しかし、より良い/カプセル化された方法はありますか?
c# - ASP.NET HoverMenuExtender 遅延読み込み
hovermenuextenders に遅延読み込みを実行させようとしています。サイト全体にアバターがあり、ホバーするとさまざまなもの(画像、最近の投稿、投稿数など)を引き戻す必要があります。明らかな理由により、page_load のすべてのアバターに対してこれを実行したくありません。
次のコードを使用して、ホバー イベントを取得してサーバーへのポストバックを非同期的にトリガーすることができます (ブレークポイントは onmouseover にヒットします)。ただし、ポストバックのコマンドは実行後に反映されていないようです。読み込み中の画像/ラベルはホバー パネルにとどまります。どんな助けでも大歓迎です!
編集:ページにレンダリングされた最後のアバターが適切に機能することに気付きましたが、その上のアバターはどれも機能しません。この奇妙な動作を引き起こしている可能性のあるアイデアはありますか?
コードビハインド:
sql - 子が存在する場合に TreeView 展開記号 [+] のみを表示する方法
データベース内の階層データからツリービューを作成するアプリケーションを開発しました。
ノードが展開されたときにのみ子ノードを取得するように、遅延読み込みを使用するように設計しました。
私の問題は、データベースを呼び出して見ない限り、明らかにノードに子があるかどうかわからないことです。現在、[+] アイコンがすべてのノードに表示されるように、ダミーの子ノードを実装しています。次に、このダミー ノードを削除し、イベントで実際の子ノードを取得しますBeforeExpand
。
これは、子ノードを持たないノードの [+] アイコンを取得することを意味するため、ユーザーが展開アイコンをクリックしても、見掛け倒しに見えるものは何も表示されません。
遅延読み込みツリービューで子ノードを処理するための推奨される方法は何ですか? 子ノードがあるかどうかを確認するためにデータベースを呼び出す場合は、子ノードをロードして、遅延ロードを忘れてください。
私が考えていたのは、'HasChildren' フラグをデータベースに保存することでした。これにより、実際に子ノードを持つノードに対してのみ、ダミーの子ノードを選択的に作成できます。
とりとめもなく申し訳ありませんが、私は他の人がどう思うかを見ることに非常に興味があります...
asp.net - LINQ to SQL での Delay Loaded プロパティのプログラムによる制御
LINQ to SQL を使用して、コードを使用してエンティティの一部のプロパティに "Delay Loaded = true" を指定する方法はありますか?
デザイナーで手動で行うことはできますが、テーブルが更新/再バインドされると、そのカスタマイズが失われます。
私は DataLoadOptions と LoadWith() を知っていますが、それは遅延読み込みの代わりに熱心な読み込みを使用するためのものであり、積極的な読み込みがデフォルトである場合に遅延読み込みを指定したいと考えています。
ScottGu はここでいくつかの興味深い約束をしましたが、彼はそれをフォローしていませんでした。:-)