問題タブ [network-efficiency]
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.
javascript - Javascriptの2つの文字列間のネットワーク効率の違い
私は、クライアント側のエディターがサーバー側で知られている非常に大きなテキストを編集しているWebアプリケーションを持っています。
クライアントは、このテキストにあらゆる種類の変更を加えることができます。
サーバーが理解できる方法で結果の違いを送信するための最もネットワーク効率の良い方法は何ですか?また、これはクライアント側(Javascript)で発生するため、「高速」(または少なくとも目立って遅くない)にすることもできます。
いくつかのシナリオ:
- ユーザーが1文字を変更する
- ユーザーがランダムな位置でいくつかの文を変更する
- ユーザーはすべてを消去し、空白のテキストになります。
ネットワーク効率が良くないため、diffのような構文を使用することはできません。行をチェックし、例1と3でひどい違いが生じます(特に最後の例では、結果が古いものよりも大きくなります)。
誰かがこの問題の経験がありますか?ユーザーは非常に大量のデータセット(約3〜5 MBのテキスト)を操作し、「新しい」コンテンツ全体をアップロードすることは大したことではありません。
明確にするために、私は転送の「プロトコル」を探しています。文字列の比較は問題ではありません。
html - HTMLは高速Webにはテキストが多すぎますか?
送信されたマークアップ言語としてのHTMLの効率について誰か知っていますか?単に中括弧を閉じる(または単に</>
)のではなく、タグを閉じると、ファイルに多くのテキストが追加されるように思われます。帯域幅は貴重なリソースであり、数十億(数兆?)のHTMLファイルが世界中で継続的に送信されている場合、これらの終了タグは合計されます。
私の質問は、それらが深刻な違いを生むのに十分な量になるかどうかです。終了タグを短くすると、ページの読み込み速度が著しく向上しますか?
.net - .NETを使用して低速ネットワーク間でさまざまなサイズのファイルを移動するための最良の方法
さまざまなサイズ(数バイトから数百MBまで)の数千のファイルを送信する.NETリモーティングクライアント/サーバーを構築しています。これを実現するための最良の方法についてフィードバックをお願いします。私が見ているように、いくつかのオプションがあります。
- ファイル全体をリモーティングオブジェクトにシリアル化し、サイズに関係なく一度に送信します。これはおそらく最速ですが、送信中に障害が発生すると、ファイル全体を再送信する必要があり、再開する方法はありません。
- ファイルサイズが小さいもの(4KBなど)よりも大きい場合は、4KBのチャンクに分割し、それらをリモートにして、サーバーで再アセンブルします。これの複雑さに加えて、継続的なラウンドトリップと確認応答のために遅くなりますが、1つのピースの障害は多くの時間を無駄にしません。
- FTPまたはSFTPサーバーのようなものをアプリケーションに含める-クライアントはサーバーにリモート処理の使用を開始していることを通知し、ファイルをアップロードしてから、リモート処理を使用して完了を通知します。個別のFTPサービスを必要とするのではなく、アプリにすべてを含めたいのですが、必要に応じてこのオプションを利用できます。
- 障害を処理するために構築された、またはある種のチェックポイント/再開を実行できる、ある種の指定されたTCP接続またはWPFまたはその他の伝送方法を使用します。
- 私が行方不明になっている他のものはありますか?
最も柔軟で信頼性の高い伝送方法は何ですか?速度についてはそれほど心配していませんが、信頼性についてはもっと心配しています。ファイルが遅くても移動したいのです。クライアントとサーバーはマルチスレッドになるので、接続が許せば同時に複数のファイルを送信できます。
フィードバックをありがとうございます-私は人々がこれを達成する方法についていくつかの推奨事項を得るために賞金を投入します。
google-app-engine - エンコードされたキーを appengine の短い識別子にマッピングする
クライアントが特定のオブジェクトを参照できるように、一意の参照をクライアントに送信したいと考えています。appengine が提供するエンコードされたキーの長さは 50 バイトになることもありますが、必要なのはおそらく 2 バイトか 3 バイトだけです (4 バイトか 5 バイトが必要になることを期待できますが、それはしばらくの間ではありません!)。
一度に 400 の参照を送信する可能性があるため、より大きなキーを送信すると、実際には非常にコストがかかります。
したがって、これらの長いキーをより短いキーにマップしたいと考えています。明らかな解決策は、マッピングをデータストアに保存することですが、400 個のオブジェクトを送信すると、さらに 400 個のクエリを実行することになりますよね? おそらく、memcache にもマッピングのコピーを保持することで、費用を軽減できます。より良い方法はありますか?
appengine が作成し、それを使用するエンコードされていないキーから番号を取得することはできますか? アプリ全体ではなく、エンティティの種類ごとに一意であるために使用する ID のみが必要です。
ありがとう、
ライリー
serialization - GWT は java.lang.Longs を効率的にシリアル化しますか?
GWT RPC メカニズムを介して、クライアントからサーバーにオブジェクト ID を送受信しています。ID は、Long (8 バイト) としてデータストアから出力されます。私のIDはすべて4バイトしか必要ないと思いますが、5バイト(またはその他)の値を与えるランダムなことが起こる可能性があります。
GWT は、平均してスペースを節約する可変長エンコーディングでこれらの値をパックすることについて賢明になるでしょうか? どこかでそうするように指定できますか?それとも、Long を int にコピーして例外的な状況に注意する独自のコードを作成する必要がありますか?
ありがとう〜
android - Android - リモート サーバーから複数の画像を効率的に読み込む方法
PHPリモートサーバーからデータ(画像+テキスト)を取得してGridViewに表示するAndroidアプリケーションがあります。ローダーを使用してバックグラウンドで操作を行っています。画像の取得には時間がかかり、テキストをすぐに表示したいので、画像とテキストには別々の接続があります。テキストは、MySQL から取得された後、サーバー上で Json でエンコードされます。アプリでは、Json オブジェクトを解析し、必要に応じてテキストを表示しています。
問題は画像にあります。Jsonで画像をエンコードするのが良い考えかどうかはわかりません。また、画像はデータベースに blob として保存されます。Json でエンコードするには、前に base64_encode() を使用する必要がありますが、これは効率的ではありません。これに関する多くの投稿を見てきましたが、1 つの画像を取得する必要がある場合は常に単純な例です。私の場合、最大 30 個の小さいサイズの画像を取得します。
私の質問は、私が今提示したことを続けることができるということですが、これを行うためのより良い方法があるはずです. これについてあなたはどう思いますか?私は間違った方向に進んでいますか?
また、「Google Play アプリ」の GridView のように、準備ができたら (すべての画像が準備されるのを待たずに) グリッドビューに各画像を個別に表示できるかどうかを考えていました。これを達成するためにどのようなアプローチを取ることができますか?
よろしくお願いします!
networking - トークン リング プロトコルの効率とサイクル タイムは?
Forouzonの本からトークンリングプロトコルを読みました。
本によると、
Nをリング内のステーション数、THTをトークン保持時間、Ttをパケットの送信時間、Tpをチャネル/リンク上のパケットの伝播時間とします。
次に、サイクル時間 = n * THT + Tp (これはトークンのサイクル時間です)
および効率 = (有効時間)/(サイクル時間)
ここで、有効時間はN * Ttとして示されています。(トークンパッシングの 1 サイクルにおける各ステーションでの送信時間として正当化されます)
したがって、証明された効率 = (N * Tt)/(n*THT + Tp )
私の質問は、なぜこれ (N*Tt) がサイクル タイムに追加されないのですか?
したがって、効率は効率 = (N * Tt)/(n*THT + Tp +N * Tt )になります。