如何加速使用jQuery的asp.net页面
我有一个网页,允许用户在表单中输入信息。我在页面和代码背后使用了一些jQuery,我需要找到一种方法来加速页面(加载大约需要30秒)。我相信有一些相当简单的修复,以加快加载的网站,下面是一些网站的剪贴画。任何帮助都会大大加快网站的加载速度如何加速使用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">
<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框架之一
通常,性能改进可以通过以下方式实现:
最后,如果查询的格式不好,或者数据库模式没有得到优化(索引等),则执行查询可能需要几秒钟甚至几分钟,而不是几毫秒。找出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);
}
}