Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加速使用jQuery的asp.net页面_Jquery_Performance_Webforms_Pagespeed - Fatal编程技术网

如何加速使用jQuery的asp.net页面

如何加速使用jQuery的asp.net页面,jquery,performance,webforms,pagespeed,Jquery,Performance,Webforms,Pagespeed,我有一个网页,允许用户在表单中输入信息。我在页面和代码背后使用了一些jQuery,我需要找到一种方法来加速页面(加载大约需要30秒)。我相信有一些相当简单的修复,以加快加载的网站,下面是一些网站的剪贴画。任何帮助都会大大加快网站的加载速度 <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server"> <script type="text/javascript">

我有一个网页,允许用户在表单中输入信息。我在页面和代码背后使用了一些jQuery,我需要找到一种方法来加速页面(加载大约需要30秒)。我相信有一些相当简单的修复,以加快加载的网站,下面是一些网站的剪贴画。任何帮助都会大大加快网站的加载速度

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">

  <script type="text/javascript">
      $(document).ready(function () {
          var i = $("table.newRequirementClass tr td:contains('Description')").next();

          i.textLimiter({
              maxLength: 255,
              elCount: 'elCount'
          });
          $("#submitMIFields").hide();
          $("#submitMIFields").toggle(false);
          $("[id$='chkMI']").change(function () {
              $("#submitMIFields").toggle("slow");
          });

          $(".MIHead").hide();
      });

      function Count(text, maxLength) {
          if (text.value.length > maxLength) {
              text.value = text.value.substring(0, maxLength);
          }
      }
   </script>

$(文档).ready(函数(){
var i=$(“table.newRequirementClass tr td:contains('Description')”).next();
i、 文本限制器({
最大长度:255,
elCount:“elCount”
});
$(“#submitmifelds”).hide();
$(“#submitmifelds”).toggle(false);
$(“[id$='chkMI']”)。更改(函数(){
$(“#submitmifelds”)。切换(“慢速”);
});
$(“.MIHead”).hide();
});
函数计数(文本,最大长度){
如果(text.value.length>maxLength){
text.value=text.value.substring(0,maxLength);
}
}


新要求

受保护的无效页面加载(对象发送方、事件参数e) { if(AuthenticatedUser.CanCreateMis()) { 复选框chkMI=(复选框)dvNewRequirement.FindControl(“chkMI”); chkMI.Checked=真; chkMI.Enabled=false; runjQueryCode(); } } 私有字符串getJQueryCode() { StringBuilder sb=新的StringBuilder(); sb.AppendLine(“$(document).ready(function(){”); sb.AppendLine($('#submitmifelds').show();); 某人以“}”号“;”号结尾; 使某人返回字符串(); } 私有void runjQueryCode() { ScriptManager requestSM=ScriptManager.GetCurrent(第页); if(requestSM!=null&&requestSM.IsInAsyncPostBack) { ScriptManager.RegisterClientScriptBlock(此, 类型(第页), Guid.NewGuid().ToString(), getJQueryCode(), 正确的); } 其他的 { Page.ClientScript.RegisterClientScriptBlock(类型)(第页), Guid.NewGuid().ToString(), getJQueryCode(), 正确的); } }
我相信有一些相当简单的修复程序可以加快网站的加载速度

这要视情况而定,因为这是在使用webforms,所以性能改进通常需要做很多工作。Webforms是最难调试和扩展的web框架之一

通常,性能改进可以通过以下方式实现:

  • 改进查询计划
  • 减少远程呼叫(IO、DB等)
  • 减少加载的数据量
  • viewstate是webforms的#1性能杀手。任何可以减小viewstate大小的操作都是一件好事

    如果一次只显示几个记录,则只加载要显示的记录。页面浏览数据库中的数据,而不是UI。从数据库加载100或1000条记录,然后显示1-20条记录时,检索到的所有记录都存储在viewstate中,而不仅仅是显示给用户的记录

    执行的查询数量也会降低性能。假设您有一个gridview,当您绑定到gridview时,您使用datasource控件将一个查找值列表加载到下拉列表中。每次绑定下拉列表时,数据源都将执行。创建这样的精选n+1问题非常容易


    最后,如果查询的格式不好,或者数据库模式没有得到优化(索引等),则执行查询可能需要几秒钟甚至几分钟,而不是几毫秒。

    找出Dynatrace AJAX edition的副本(http://ajax.dynatrace.com/ajax/en/)

    viewstate有多大?它的反序列化需要多长时间

    有多少表单字段依赖于viewstate中的数据,下拉列表有多大等等

    我的猜测是,您推送了太多的数据,这些数据必须反序列化并通过Javascript填充到表单中

    <div style="text-align: left; width: 80%;">
            <h2 runat="server" id="h2Caption">New Requirement</h2>
            <asp:Panel ID="ErrorSummary" runat="server">
            <asp:Label runat="server" ID="lblErrors" />
            <asp:ValidationSummary id="valSummary" runat="server"
            HeaderText="Please Revise The Following Errors:"
            ShowSummary="true" DisplayMode="List" />
    
            </asp:Panel>
            <asp:DetailsView ID="dvNewRequirement" 
                runat="server"  CssClass="newRequirementClass"
                AutoGenerateRows="False" 
                Width="100%"
                DefaultMode="Insert"
                SkinID="SampleDetailsView" 
                CssSelectorClass="PrettyDetailsView" 
                OnItemInserting="dvNewRequirement_ItemInserting" 
                OnModeChanging="dvNewRequirement_ModeChanging" 
                ondatabound="dvNewRequirement_DataBound" >
                <FieldHeaderStyle Width="15em" Font-Bold="True"/>
                <Fields>
                    <asp:TemplateField HeaderText="Status">
                        <InsertItemTemplate>
                        <asp:Label ID="lblStatus" Text="Pre-Solicitation" runat="server" />
    
                        </InsertItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Vehicle:" Visible="false" >
                        <InsertItemTemplate>
                            <asp:DropDownList ID="ddlVehicles"
                                runat="server" 
                                DataTextField="strDescription" 
                                DataValueField="strCode" 
                                DataSource='<%# CodeLists.Vehicles() %>'
                                AppendDataBoundItems="true">
                                <asp:ListItem Text="" Value="" />
                            </asp:DropDownList>
                        </InsertItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Office:">
                        <InsertItemTemplate>
                            <Proj:OrgTree id="OrgTree" runat="server" Filter="false" Visible='<%# (AuthenticatedUser.CanCreateMis() != true) ? true : false %>'
                            SelectedValue = '<%# (AuthenticatedUser.IsCUS() != true) ? BaseControl.LoginOffice : Guid.Empty %>' />
                        </InsertItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Customer Office:">
                        <InsertItemTemplate>
                            <Proj:OrgTree id="customerOrgTree" Filter="false" runat="server"
                            SelectedValue = '<%# (AuthenticatedUser.CanCreateMis() == true) ? BaseControl.LoginOffice : Guid.Empty %>' />
                        </InsertItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Description:" ControlStyle-CssClass="Description">
                        <InsertItemTemplate>
                            <asp:TextBox runat="server" ID="txtDescription"
                                TextMode="multiLine" onKeyUp="Count(this,257)" onChnage="Count(this,257)"
                                Width="90%"/><br />
                                <div id="elCount"></div>
                        </InsertItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Procurement Type:">
                        <EditItemTemplate>
                            <asp:DropDownList ID="ddlProcurementTypeList" 
                                runat="server" 
                                DataTextField="strDescription" 
                                DataValueField="strCode" 
                                DataSource='<%# CodeLists.ProcurementTypes() %>'
                                AppendDataBoundItems="true">
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Type:">
                        <InsertItemTemplate>
                            <asp:DropDownList ID="ddlTypeList" 
                                runat="server" 
                                DataTextField="strDescription" 
                                DataValueField="strCode" 
                                DataSource='<%# CodeLists.Types() %>'
                                AppendDataBoundItems="true">
                                <asp:ListItem Text="" Value="" />
                            </asp:DropDownList>
    
                        </InsertItemTemplate>
                    </asp:TemplateField>
                <asp:TemplateField HeaderText="Est Total Value:">
                    <InsertItemTemplate>
                        <asp:TextBox ID="txtEstValue" 
                            runat="server"  />
                        <ajax:FilteredTextBoxExtender ID="FilteredTextBoxExtender1"
                            TargetControlID="txtEstValue"
                            FilterType="Numbers,Custom"
                            ValidChars=",."
                            runat="server" />                                                    
                    </InsertItemTemplate>
                </asp:TemplateField> 
                <asp:TemplateField HeaderText="Customer Contact Date:">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtCustomerContact" 
                            runat="server"  />
                        <ajax:CalendarExtender ID="calCustomerContact" 
                            runat="server" 
                            TargetControlID="txtCustomerContact" />
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Req Start Date:">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtReqStartDate" 
                            runat="server" />
                        <ajax:CalendarExtender ID="calReqStartDate" 
                            runat="server" 
                            TargetControlID="txtReqStartDate" />
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Previous Number:">
                    <EditItemTemplate>
                        <asp:DropDownList ID="ddlAwardList" 
                            runat="server" 
                            DataTextField="strAwardNumber" 
                            DataValueField="strAwardNumber" 
                            DataSource='<%# CodeLists.AwardNumbers() %>'
                            AppendDataBoundItems="true">
                            <asp:ListItem Text="None" Value="" />
                        </asp:DropDownList>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Currency">
                    <EditItemTemplate>
                        <asp:DropDownList ID="ddlCurrencyList"
                            runat="server"
                            DataTextField="strCultureName"
                            DataValueField="strCulture"
                            DataSource='<%# CodeLists.Currency() %>'
                            AppendDataBoundItems="true" >
                            </asp:DropDownList>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="?">
                    <EditItemTemplate>
                        <asp:CheckBox runat="server" ID="chkMI" />
                        <div id="submitMIFields">
                            <Proj:MI runat="server" ID="initialMI" />
                        </div>
                    </EditItemTemplate>
                </asp:TemplateField>
                    <asp:CommandField InsertText="Submit" ShowCancelButton="False" 
                        ShowInsertButton="True" ControlStyle-CssClass="NewReqSubButton" />
                </Fields>
            </asp:DetailsView>
    
        </div>
    
    
        protected void Page_Load(object sender, EventArgs e)
    {
        if (AuthenticatedUser.CanCreateMis())
        {
            CheckBox chkMI = (CheckBox)dvNewRequirement.FindControl("chkMI");
            chkMI.Checked = true;
            chkMI.Enabled = false;
            runjQueryCode();
    
        }
    }
    
        private string getJQueryCode()
    {
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("$(document).ready(function() {");
        sb.AppendLine("$('#submitMIFields').show();");
        sb.AppendLine(" });");
    
        return sb.ToString();
    
    }
    
    private void runjQueryCode()
    {
        ScriptManager requestSM = ScriptManager.GetCurrent(Page);
        if (requestSM != null && requestSM.IsInAsyncPostBack)
        {
            ScriptManager.RegisterClientScriptBlock(this,
                                                    typeof(Page),
                                                    Guid.NewGuid().ToString(),
                                                    getJQueryCode(),
                                                    true);
        }
        else
        {
            Page.ClientScript.RegisterClientScriptBlock(typeof(Page),
                                                    Guid.NewGuid().ToString(),
                                                    getJQueryCode(),
                                                    true);
        }
    }