私は何を達成しようとしていますか? クライアント側には、プログレスバーを表示するさまざまなdivがあります。これらの進行状況バーのそれぞれは、異なるステータス/レベルを示しています。それらはすべて動的に更新されています。パフォーマンスの問題がなくても動的に更新を続ける必要があります。パフォーマンスの問題なしにメテオを使用してクライアント側で複数のプログレスバーを同期させる
あなたが話しているパフォーマンスの問題は何ですか? 私のサーバー側では、クライアント側で実行されている各プログレスバーのステータスを確認できるロジックが実行されています。現在、プログレスバーのステータスレベルを更新し続けるために、10分の1秒間setIntervalを設定しています。最初に私はmongoコレクションに直接データを永続させることでこれを行いました。クライアントがテンプレートヘルパーを介してステータスを返すことによってテンプレートを更新するのに使用しました。これは大丈夫です(ほとんどの場合)。しかし、すでに実行中のメインボディテンプレートのオンタップをダイナミックプログレスで開くモーダルボックス(リアクティブモーダルボックス)を追加したとき、それは劇的に減速し始めます。モーダルボックスには、ユーザーがクリックしたdivの特定のプログレスバーも表示されます。
短いストーリーでパフォーマンスの影響は劇的であり、クロールします。これは、mongoデータベースに永続化することで、非常に多くのプログレスバーの更新を実行する必要があるサーバーが原因であると考えました。それはあまりにも多くだった。
私はこれを解決しようとしましたか? 私は、各進捗バーのステータス/レベルを保存するために、永続性をmongoデータベースに完全にバイパスしようと決めました。これはパッケージ名を実装することで実現しましたrocketchat:streamer
このパッケージは「DDPによる2方向通信」を提供します。これを行うことで、サーバー上のローカルキャッシュされた配列にプログレスバーレベルを格納してから、rocketchat:streamerを介してDDPを介して直接クライアントにデータをプッシュすることができました。これにより、実際にはパフォーマンスが向上しました。
あなたの問題は何ですか、なぜこの質問を送信していますか?
どちらの戦略にもかかわらず、私はまだパフォーマンスの問題を解決していますが、開発サーバーにログインしている接続されたさまざまなデバイスからの同期が正確な進行状況バーの同期ステータスを取得しません。ブラウザに接続しているすべてのユーザーに対して常に同じ正確なステータスを表示するには、すべてのプログレスバーが必要です。私は、テンプレート上に例えば9つの異なる一意のプログレスバーを表示する能力と、ユーザがユニークなdivの1つをクリックすると、モーダル内に別の単一のプログレスバーを表示するプログレスバーが表示される必要があります。
皆さん、サーバー側で実行されているロジックからデータを取得することで、クライアント側で複数の異なるプログレスバーを同期させるにはどうすればよいですか?
私はこれを実装する簡単で簡単な方法を探しています。このタイプのユースケースでは、Meteorとのパフォーマンスと同期の両方を持つ簡単な方法が必要であることはわかっています。
ご協力いただければ幸いです。
はチャイムするために提供していますコミュニティの皆さんに感謝します。
ポイントは、おそらく重要な手がかりです。あなたの元のアプローチ(進行状況のmongoを更新して、pub-subにその作業をさせてください)はしっかりしています。 "余分な"プログレスバーはいつでも別のサブスクリプションで処理されましたか?これがクライアント側の問題であるのか、サーバー側の問題であるのか分かりましたか?クライアントのネットワークトラフィックはどのように見えるのですか?あなたのヘルパーはモーダルを描いたら予想以上に更新されていますか? –
あなたのお返事ありがとうございます。私は最終的に、サーバサイドのMeteor.publishがコレクションの検索を実行していたが、もはやアクティブで必要のないドキュメントを含むすべてのドキュメントを返すことを実感して解決に至りました。コレクションは成長を続け、このデータの大部分はもはやアクティブでなくなったので必要でさえありませんでした。私は$ ninを行うようにfindを変更し、古い期限切れのデータはクライアントに公開しないようにしました。主なパフォーマンスが向上します。また、ここで素晴らしい記事が見つかりました:https://kadira.io/academy/meteor-performance-101/content/reducing-pubsub-data-usage – jremi