1

データを蓄積し (数 MB/秒ですが、1 秒間に 10 回程度更新)、現在のプロセスを JavaScript を介してブラウザーに表示するアプリケーションを作成しました。

問題は、現在、データをファイルに書き込んで JavaScript でロードしていることですが、これによりアプリケーションが非常に遅くなり、hdd が頻繁に動作していると不平を言う人がいます。

「FILE_ATTRIBUTE_TEMPORARY」などのフラグを使用して、実際にファイルをディスクに書き込まないように OS に指示したいのですが、javascript では最初にファイル ハンドルを閉じる必要があります (そうしないと、firefox で開くことができませんでした)。したがって、その時点でディスクに書き込まれ、最初にそのフラグを使用するポイントが殺されます。

私は mysql データベースのようなものを使用することを考えましたが、できるだけシンプルに保ちたいので、ユーザーに http または mysql サーバーのセットアップを強制しないソリューションを好みます。

4

3 に答える 3

3

スタンドアロンC++アプリケーションにWebサーバーを組み込み、メモリから直接データを提供します。

これが、現在直面しているI/Oオーバーヘッドを回避する唯一のオプションだと思います。JSには、IPC、メッセージキュー、または同様のものへのインターフェイスはありません。TCP(またはWebSocketを使用するUDP)は、ディスクI/Oを回避する唯一の可能な方法のようです。もう1つのオプションは、JavaScriptを、ネイティブコードでオペレーティングシステムの機能にアクセスできるブラウザプラグインに置き換えることです。

注:UNIX環境では、ファイルシステムにFIFOソケットを作成できます。これは、目的を果たす場合もあれば、そうでない場合もあります。ただし、windowsがこのようなものをサポートしているとは思いません。

于 2012-11-12T23:10:01.027 に答える
1

データを蓄積するアプリケーションがユーザーのマシンでローカルに実行されており、ブラウザに読み込まれたページもローカルであるように思われます。ユーザーがHTTPサーバーを構成する必要がない(または実行すると想定する)、パフォーマンス上の理由でデータをディスクに書き込まないようにする、タイトルに「IPC」が含まれていると述べたように、私は何を信じていますか残っているのは、ブラウザプラグインを作成するか、ページにActiveXコントロールを含めることです。

ページのActiveXコントロールは、プラットフォームで利用可能なIPCメカニズムのいずれかをネイティブコード(共有メモリなど)に利用できます。

別のオプションは、アプリケーションをHTTPサーバーにすることで、別のサーバーは必要ありませんが、HTTPサーバーを構成する必要があるユーザーのカテゴリに分類される場合があります(たとえば、ソフトウェアファイアウォールのポートを開く必要がある場合があります)。 )。

于 2012-11-12T23:10:19.793 に答える
0

選択したWebサーバー用のプラグインまたはCGIプログラムを作成して、Javascriptがサーバー上の特定のURLにアクセスし、返されるデータが実際のファイルからではなく、処理するプログラムによって提供されるようにする方法を検討します.ウェブリクエスト。(これは、ほとんどの Web サーバーで実行できます。C++ プログラムが標準のコンソール出力に書き込むのと同じくらい簡単です。)

于 2012-11-12T23:00:01.777 に答える