2

[インターフェース の説明]ストーリーはチェックリストについてです。ユーザーインターフェイスは、モバイル画面用に調整されたページ上の長いテーブルで構成されています。各行には3つのボタンがあります(DBのチェックリストレコード)。 インターフェイスeaxmple

最初のボタン[FIX]は、このDBレコードに問題があることを示していますか?それを修正する必要があります。また、中央のボタンの背景色を黄色に変更します。2番目のボタン[チェックリストの質問あり]は、データベースのレコードをOKとしてマークし、その背景色を緑色に変更します。最後のボタン[NOGO]は、レコードを通過禁止としてマークし、中央のボタンの背景色を赤に変更します。

[現在の動作] すべてのボタンがポストバックを作成し、ボタン名と行番号が決定され、DBレコードが更新され、開始ボタンの特定の背景色を持つ新しいページが生成されて再ロードされます。

[問題-3Gのモバイルデバイスでパフォーマンスが低下する] ページが確定するまで任意のボタンをクリックすると、Firefox Windows 7-0.6秒(完璧)Firefox Samsung Galaxy Xcover Android 2.3.6 on WiFi〜2秒(管理可能)Firefox Samsung Galaxy Xcover Android 2.3 .6 on 3G〜12秒!!! (サーバーへの3G速度はiperf〜2Mbpsで測定されました)

[アイデア] 操作中のページは書き込みのみで、DBからの値の読み取りは行わないため、クライアント側でのみ操作でき、最後の[チェックリストの保存]ボタンが押されたときに変更されたデータを押します。

[質問] 今頭に浮かぶのは、同じ生成されたフォームで、ポストバックボタンの代わりにクリックJavaスクリプトを使用して背景色を変更し、各レコードの非表示フィールドにDBに保存する新しい値が含まれていることです。投稿時に、すべてを分析して保存します。

他のアプローチやアイデアについて教えてください。この直接的なアプローチよりも賢いものはありますか?

ジャニス

4

2 に答える 2

1

オフViewStateにすることが私の最初の推奨事項です。

その後、YSlow / Fiddler / Firebug / Chrome Tools ... etcを実行して、クライアント側で何がかかるかを確認します(クライアント側である場合)。DataBaseおよびBusiness Layerレベル でバックエンドもプロファイリングします。

ボトルネックを特定するまで、効果的に最適化することはできません。

これを言う多くの人の一人:

パフォーマンスについて話しているとき、「おそらく」の余地はありません。変更がプログラムに役立ったか、または害を及ぼしたかを知るために、常にパフォーマンスを測定する必要があります。

コードコンプリート:ソフトウェア構築の実用的なハンドブック

28.2コードチューニングの概要

于 2013-01-11T12:20:30.770 に答える
0

インターフェイスをサーバー側からクライアント側に移動することでうまくいきました。現在、JavaScriptで色を変更し、非表示フィールドに値を保存しています。データは送信時に転送され、インターフェイスの応答性は重要ではなくなります。

 <asp:Repeater ID="questionRepeater" runat="server">
        <ItemTemplate>
            <tr>
                <td>
                    <input type="button" value="FIX" style="width: 50px; min-height:50px;" onclick="Q<%# DataBinder.Eval(Container.DataItem, "cRowid")%>.style.backgroundColor = '#FFFF00'; document.getElementById(<%# DataBinder.Eval(Container.DataItem, "cRowid")%>).value='FIX';" />
                </td>
                <td>
                    <input  type="button" 
                            id='Q<%# DataBinder.Eval(Container.DataItem, "cRowid")%>' 
                            value='<%# DataBinder.Eval(Container.DataItem, "cQuestion")%>'
                            style="width: 250px; white-space: normal; min-height:50px; background-color: <%# DataBinder.Eval(Container.DataItem, "cRColor")%>; font-size: large;" 
                            onclick="this.style.backgroundColor = '#00FF00'; document.getElementById(<%# DataBinder.Eval(Container.DataItem, "cRowid")%>).value='OK';" />
                </td>
                <td>
                    <input type="button" value="NOGO" style="width: 50px; min-height:50px;" onclick="Q<%# DataBinder.Eval(Container.DataItem, "cRowid")%>.style.backgroundColor = '#FF0000'; document.getElementById(<%# DataBinder.Eval(Container.DataItem, "cRowid")%>).value='NOGO';" />
                    <asp:HiddenField ID='<%# DataBinder.Eval(Container.DataItem, "cRowid")%>'  />
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
于 2013-01-14T06:21:18.157 に答える