web-dev-qa-db-ja.com

デスクトップGUIの読み込みが遅い

私はwxPythonを使用してデスクトップベースのGUI(単一フォーム)を開発しており、クライアントのプライベートネットワークからのリモートcitrixアクセスを使用してロードします。

GUIに、アプリケーションの起動時に一緒にロードされる選択ボックスとテキストボックスの特定のグループがあるとします。選択ボックスの値はデータベースから取得され、選択ボックスの値の選択に基づいて、対応するテキストボックス(最初は空白)がデータベースから入力されます。

ここで問題となるのは、リモートアクセスが遅いため、すべてのコントロールが読み込まれるまで長時間(約5〜7分)待たなければならないことです。この時間を減らすことができれば、何か提案はありますか?

最初に考えられる1つの方法は、GUIを複数のタブに分割し、コントロールをタブ間で分割することです。このようにして、アプリケーションが最初のタブを表示するために起動するときに、ロードするコントロールを少なくする必要があります。ユーザーが対応するタブをクリックした後にのみ、他のコントロールがロードされます。

他の方法またはこれが最善のアプローチですか?

1
SRC

7分?これはメガバイト相当のデータでなければなりません。 56Kモデムを超えていても、その間に1メガバイト以上をダウンロードできます。メガバイト単位のデータでない場合は、フェッチ1カーソルのような不正なアクセスパターンを使用しているため、バッチダウンロードパターンに変更する必要があります。小さな個別のクエリが多数ある場合は、スレッドで同時に起動するか、データベースプロシージャを記述して、サーバー側のすべてのデータを収集し、1つのクエリで送信します。

選択ボックスの値が頻繁に変更されない場合は、値をテキストファイルまたはローカルデータベースにキャッシュし、実際の値が到着するまでそれらを使用します。

または、アプリケーションまたは共有ライブラリに値を書き込みます。次に、開始時にアプリケーションの更新を確認します。これは、税務アプリケーションの動作方法です。

データが頻繁に変更される場合は、変更を追跡し、パッチをダウンロードしてローカルデータキャッシュを更新する方法を提供します。

最後に、実際のデータベースへのデータ送信中に、古いデータによる間違いが検出されるように設定します。

2
Zan Lynx

どのフォームデザインでも、ユーザーが最初にロードするときに表示する必要があるデータのみをロードするのが最善です。したがって、ユーザーが最初のフォームで操作するすべてのコントロールをスローする代わりに、タブで提案したようにそれを広げるか、別々のウィンドウ/メニューなどで開いてもらいます。

2
JWiley