2

【界面说明】 故事是关于清单的。用户界面由为移动屏幕量身定制的页面上的长表组成。每行有三个按钮(数据库中的清单记录)。 接口示例

第一个按钮 [FIX] 将此 DB 记录标记为有问题?这需要修复。它还将中间按钮的背景颜色更改为黄色。第二个按钮 [With checklist question] 将数据库中的记录标记为 OK,并将其背景颜色更改为绿色。最后一个按钮 [NOGO] 将记录标记为禁止传输,并将中间按钮的背景颜色更改为红色。

[现在如何工作] 每个按钮都进行回发,确定按钮名称和行号,更新数据库记录,并生成并重新加载具有特定背景颜色的启动按钮的新页面。

[问题 - 移动设备在 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 上 3G ~ 12 秒 !!! (使用 iperf ~2Mbps 测量到服务器的 3G 速度)

[想法] 由于操作过程中的页面只是写入,而不是从数据库中读取任何值,它只能在客户端操作,当最后按下[保存清单]按钮时推送更改的数据。

[问题] 我现在唯一想到的是 - 相同的生成表单,而不是回发按钮正在使用点击 java 脚本来更改背景颜色和每个记录的填充隐藏字段包含要保存在数据库中的新值?The, on post, 分析并保存所有内容。

你能提到其他方法和想法吗?有什么比这种直接方法更聪明的吗?

贾尼斯

4

2 回答 2

1

关闭ViewState将是我的第一个建议。

之后运行 YSlow/Fiddler/Firebug/Chrome Tools...等,看看客户端需要这么长时间,如果它是客户端的话。DataBase在andBusiness Layer级别 对后端进行概要分析。

在确定您的瓶颈之前,您无法有效地优化。

这么说的很多人之一:

当您谈论性能时,没有“可能”的余地。您必须始终衡量性能以了解您的更改是帮助还是损害了您的程序。

Code Complete:软件构建实用手册

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 回答