これは HTML 5 Canvas アプリケーションです。これは、ユーザーがオブジェクトをレイアウトに追加し、それらを移動し、それらのプロパティを編集する、かなり標準的な「デザイナー」アプリケーションです。
これは非常にうまく機能しますが、Windows 7 上の IE 9 ではパフォーマンスに問題があることが判明しました。
通常の 2 秒ではなく、操作に 10 秒かかることがよくあります。
また、アプリケーションをしばらく使用すると、ホストが「応答していません」というエラー メッセージがブラウザに表示され、Recover Webpage と X のオプションが表示されます。これが発生し始めると、[ファイル] メニューを含むすべてのユーザー アクションに対して発生し、 URL の場所のテキストを編集することによってのみ、この問題から抜け出すことができます。特に、開発者ツールでブラウザーのプロファイラーを使用しようとすると、通常発生します。これは明らかに苛立たしいことですが、手がかりになることもあります。このエラー メッセージで示唆されているように、保留中の同期 AJAX 呼び出しがあるのではないかと考えましたが、開発者ツールを使用してネットワーク トラフィックをキャプチャすると、すべての呼び出しが完了していることがわかります。
この問題は、このブラウザと OS の組み合わせに固有のようです。Windows Server 2008 の IE 9 は正常に動作し、Windows 7 の Firefox と Chrome も正常に動作します。問題は 32 ビットまたは 64 ビットの IE で同じです。
これらの操作のほとんどには、サーバー側のコンポーネントもあります。たとえば、テキスト オブジェクトを追加すると、オブジェクトの画像を提供するための AJAX 呼び出しが行われます。サーバー API は、画像処理に ImageMagick を使用する小さな TurboGears アプリケーションとして実装されています。しかし、大まかなプロファイリングは、サーバー側で異常なことは何も起きていないことを示しています。これは、問題が本当に JavaScript にあることを示唆しています。
タスク マネージャーは、アプリケーションの実行時に 90% 以上の CPU を使用しているブラウザーを示します。これは、IE 9 だけでなく、どのブラウザーにも当てはまります。これは、アプリケーションのレンダリング ループがタイトなためである可能性が高いため、キャンバスを再描画する頻度を減らすという 1 つのアイデアがありました。残念ながら、これは役に立たなかったようです。requestAnimationFrame は良いアイデアのように思えますが、IE 9 ではサポートされていません。
同僚は、Google Chrome Frame プラグインを使用すると役立つかもしれないと提案しました。許容できる解決策かもしれませんが、まだ試していません。
コントロール パネルのオプション「GPU レンダリングの代わりにソフトウェア レンダリングを使用する」をオンにするようにというアドバイスを見つけましたが、それは役に立たないようです。