推迟回发

时间:2013-01-11 11:12:06

标签: android asp.net client-side

[接口说明] 故事是关于清单。用户界面包含针对移动屏幕定制的页面上的长表。每行中有三个按钮(DB中的清单记录)。 interface eaxmple

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

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

[问题 - 3G上的移动设备性能下降] 单击任何按钮,直到页面结算 Firefox Windows 7 - 0.6秒(完美) Firefox三星Galaxy Xcover Android 2.3.6在WiFi上~2秒(可管理) Firefox三星Galaxy Xcover Android 2.3.6在3G~12秒!!! (使用iperf~2Mbps测量服务器的3G速度)

[思想] 由于操作期间的页面只是写入,而不是从DB读取任何值,因此它只能在客户端操作,在按下[Save the checklist]按钮时按下更改的数据。

[问题] 我现在唯一想到的是 - 相同的生成形式,而不是回发按钮在点击java脚本上使用以更改背景颜色和每个记录的填充隐藏字段包含要保存在DB中的新值?在帖子上,分析并保存所有内容。

你能提到其他方法,想法吗?还有比这种直接方法更聪明的东西吗?

的Janis

2 个答案:

答案 0 :(得分:1)

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

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

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

有很多人这样说:

  

当你谈论表演时,“可能”没有空间。   您必须始终测量性能以了解您的更改   帮助或伤害了你的计划。

代码完成:软件构建实用手册

28.2 Introduction to Code Tuning

答案 1 :(得分: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>
相关问题