Configuration :: Slow Initial Page Load Speed And Compile Settings
Dec 8, 2010
Over the last week I've been investigating an issue for one of our clients whereby the initial page load following a deployment of their website takes around 1 minute, resulting in unacceptable downtime for end users. This was happening not only for code deplyments (bin dll's and .config files) but also if there were large numbers of .aspx pages updated. For code deployments it's not an issue, but for aspx updates it is; in this particular scenario, we are making use of a 3rd party content management system (RedDot from OpenText) in which every page of the site is published out as a distinct .aspx page. This means that for this website there's somewhere in the region of 2,400 separate .aspx pages. I realise this isn't an ideal situation but we're working within the constraints of the CMS, and we managed to correlate the instances where the site was unresponsive with App pool restarts, which also corresponded to publications of of .aspx pages.
I found an article by Tess Ferandez [URL] which describes all the reasons why the app pool may restart, and it does seem that if more than 15 .aspx pages are changed then the app pool will recycle and the pages will be re-compiled. Another msdn article [URL] then gave me a few pointers on how to start addressing this problem, and for the moment I've set a flag on the compilation options to prevent batch compilation:
<compilation batch="false">
This means that the initial page load now takes around 6 seconds instead of 1 minute, which is a great improvement. However, I also used the "Compilations Total" performance counter to investigate the number of pages that have been compiled by ASP.NET for my site and was quite surprised that the total number of pages that get compiled peaks at 44, which is odd given that there are 2,400 aspx pages in the site. If the batch flag is set to false, the counter slowly increments by 1 page at a time as you click around on the site; if batch mode is true, the initial compilation takes the number straight to 44 over the course of ~60 seconds. What I'm really struggling to understand is why all 2,400 pages aren't compiled. Does anyone have any inside info on what might be going on as all the documentation I've read seems to indicate that all of the pages should be compiled and this counter should be much higher.
View 1 Replies
Similar Messages:
Apr 11, 2010
I have a simple web application that loads very slow the very first time after i deploy it. I am using ASP.NET 3.5 SP1 / VS 2008 / Linq / Web forms to load the default.aspx home page. It is a very light page with nothing too fancy.Now to debug this load issue, I logged all the events in the global file and got the following log text:
2010-04-10 11:58:38,083 - Application_Start
2010-04-10 11:58:38,111 - Application_BeginRequest
2010-04-10 11:58:38,117 - Application_AuthenticateRequest
2010-04-10 11:58:52,321 - Session_Start
2010-04-10 11:58:52,454 - Page_Load
2010-04-10 11:58:53,951 - End Page_load
2010-04-10 11:58:53,981 - Application_EndRequest
Now my question is, between the Application_AuthenticateRequest and Session_Start functions, there is generally around 10 - 15 seconds - which i believe seems to be the problem.The thing, I am unsure why this is slow between these two functions.I am not using any forms authentication.Also, I am not doing anything fancy in the global file besides setting a session variable.
View 9 Replies
Jan 22, 2010
I'm writing a simple web site using codebehind for each page, however using the "codefile" directive, not "codebehind" as such, because I'm not precompiling. I'm just using a text editor to edit the aspx and codebehind files. Problem is, every time I make a change to the code or the aspx file, and refresh the page in the browser, it takes a 2 or 3 seconds to come up the first time, like it's doing an on-demand initial compile. I assume that's what it's doing, as after the initial load, the page refreshes without any delay at all.
This behaviour is quite frustrating when making small changes to the html or code. I'm coming from classic ASP, where you could edit-refresh-edit-refresh etc. all day without your "stride" being broken by waiting for a "compile", you know? So I'd love to know if there's a setting which prevents this initial delay. When I want to deploy, I can do a compile or something, but while making lots of small edits, I just need the page to run without that initial delay.
View 6 Replies
Nov 3, 2010
I have a hybrid ASP.Net web forms/MVC app. On one of the MVC "pages"/views, I have it render a bunch of dates using the ToShortDateString() and ToLongDateString(). These work correctly most of the time, but the first time I load the view after compiling the app, they are formatted incorrectly.
I traced this down and checked the current thread's culture. For 99% of the time it's en-US, but on the first load of the MVC view after compiling it is set to en-GB. If I reload the page immediately after that, it's back to en-US.
I have tried setting the culture and uiculture in the web.config file to en-US to force it to be correct, but no luck.
View 1 Replies
Sep 3, 2010
The first time that my page loads (this is after it has been deployed), it is terribly slow.
My guess is that it is still compiling dynamically, and not precompiling.When I publish through VS2008 I have "Allow this precompiled site to be updatable" unchecked and "Use fixed naming and single page assemblies" checked.Could I be missing something in my web.config file?
I can post the URL of the site if you would like to view it, but it takes 10+ seconds to load upon first visiting, and then less than 1 second to navigate the site.
View 3 Replies
Sep 27, 2010
i see that my site is a little slow in my localhost it is fast but in the server not but i see that videos are displayed without problems so i dont think that is from bandwith but i am not sure which are the main things that make a page go slow? sessions can be one of that?? or connections with database??or something else?
View 8 Replies
Apr 21, 2010
i have developed an ERP in asp.net 3.5. The problem is that when published and as well as during development, the execution speed of page is very slow. I have off the compilation mode in web.config and also get all the data in page load and then filter it using Dataview rowfilter property but i can't get much better speed.
View 5 Replies
Feb 24, 2011
We recently migrated to v4 of .net. We are running iis 7 in integrated mode. When the site first starts its slow. I get that - it compiles for the first time. The odd thing is then we will go to certain pages and it seems to compile again. The next time i go that page its very fast. Nothing exceptional with the second page - but once that is hit the rest of the site is fast.
View 1 Replies
Dec 20, 2010
We have an asp.net website running on IIS 6 Windows 2003. When ever we upload a class file to the App_Code folder our whole site goes down temporarily until, what I assume, compilation is complete. Has anyone else experienced this? Any other file we upload it does not do this only our class files.
View 1 Replies
Jun 17, 2010
I have this simple code in my page, I have a long page, if the client use this button then it shall reload the page and display the page from the beginning. I wish to be reload the page and display from the last position.
<asp:RadioButtonList ID="RadioButtonList5" runat="server" AutoPostBack="True"
RepeatDirection="Horizontal">
<asp:ListItem Value="45">Sheet2</asp:ListItem>
</asp:RadioButtonList>
View 1 Replies
Jul 22, 2010
I posted a similar question previously, but none of the answers worked and I've been scouring all over the web trying to find a solution. My situation, I have a Edit Window webform with a dropdownlist (Note: to avoid confusion, I'm using Telerik extensions only to decorate the webform):
<%@ Page Language="VB" CodeFile="EditFormVB.aspx.vb" Inherits="EditFormVB" %>
<%@ Register Namespace="CustomBoundField" TagPrefix="custom" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Edit Pop-up</title>
</head>
<body class="">
<form id="form1" runat="server">
<div>
<script type="text/javascript">
function CloseAndRebind(args) {
GetRadWindow().BrowserWindow.refreshGrid(args);
GetRadWindow().close();
}
function GetRadWindow() {
var oWindow = null;
if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz as well)
return oWindow;
}
function CancelEdit() {
GetRadWindow().close();
}
</script>
<asp:ScriptManager ID="ScriptManager2" runat="server" />
<telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" Skin="Vista" DecoratedControls="All" />
<br />
<br />
<asp:DetailsView ID="DetailsView1" DataKeyNames="ID" runat="server" AutoGenerateRows="False"
GridLines="None" DataSourceID="detailsSqlDataSource" Height="50px" Width="125px"
BorderWidth="0" CellPadding="0" CellSpacing="7">
<Fields>
<asp:BoundField DataField="TS_DESCRIPTION" HeaderText="TS_DESCRIPTION" SortExpression="TS_DESCRIPTION" />
<asp:BoundField DataField="TS_TITLE" HeaderText="TS_TITLE" SortExpression="TS_TITLE" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowInsertButton="True" />
</Fields>
</asp:DetailsView>--%>
<telerik:RadScriptManager ID="RadScriptManager1" runat="server" />
<telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" Skin="Vista" />
<br />
<br />
<asp:DetailsView ID="DetailsView1" runat="server" Height="400px" Width="745px"
AutoGenerateRows="False" DataKeyNames="TS_ID" DataSourceID="SqlDataSource2"
EnableModelValidation="True">
<Fields>
<asp:TemplateField HeaderText="Category">
<EditItemTemplate>
<%--<asp:DropDownList ID="TTCategory" runat="server" DataSourceID="ReqCategoryData" SelectedValue='<%# Bind("TS_NAME") %>' />--%>
<asp:DropDownList DataSourceID="ReqCategoryData" DataTextField="ReqCategory" DataValueField="ReqCategory"
ID="reqCategoryDropDown" runat="server" AppendDataBoundItems="true" AutoPostBack="true" >
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Button" EditText="Update" ShowEditButton="True"
ShowCancelButton="True">
<ItemStyle HorizontalAlign="Center" />
</asp:CommandField>
</Fields>
</asp:DetailsView>
</div>
</form>
</body>
</html>
And in the code behind, I'm setting the datasource for the dropdownlist and using a function to query the DB for the name of the value I want to set as the selected value when the page loads initially: Partial Class EditFormVB Inherits System.Web.UI.Page
Public Shared category_Name As String = ""
Dim ddlDataSource As New SqlDataSource
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
DetailsView1.DefaultMode = DetailsViewMode.Edit
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Page.Title = "Editing record"
''Setup DropDownList SqlDataSource
ddlDataSource.ID = "ReqCategoryData"
Page.Controls.Add(ddlDataSource)
ddlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("TTPRODReportsQuery").ConnectionString
ddlDataSource.SelectCommand = "SELECT TS_NAME AS ReqCategory FROM dbo.TS_SELECTIONS WHERE (TS_FLDID = 5299 AND TS_STATUS = 0) ORDER BY TS_NAME"
Dim args As New DataSourceSelectArguments
ddlDataSource.Select(args)
''Set max length of Title field to 70 characters
Dim dvrTest As DetailsViewRowCollection = DetailsView1.Rows
Dim TitleTB As TextBox = dvrTest.Item(0).Cells(1).Controls(0)
TitleTB.Attributes.Add("onkeydown", "isMaxLen(this)")
TitleTB.Attributes.Add("maxlength", "70")
Dim myDDL As DropDownList = DetailsView1.FindControl("reqCategoryDropDown")
''Perform dropdown list population operations
If Page.IsPostBack = False Then
Dim ticket_ID As String = getDataKey(DetailsView1)
''Fetch Category ID
Dim sqlText As String = "SELECT TS_REQCATEGORY FROM USR_ITFAC WHERE (TS_ID = " + ticket_ID + ") "
Dim reqDataReader As SqlDataReader = GetDataReader(sqlText)
reqDataReader.Read()
Dim category_ID As String = reqDataReader(0)
''Fetch Category name using the categoryID and set as selected value in dropdown list
sqlText = "SELECT TS_NAME FROM TS_SELECTIONS WHERE (TS_ID = " + category_ID + ") "
reqDataReader = GetDataReader(sqlText)
reqDataReader.Read()
category_Name = reqDataReader(0)
myDDL.DataBind()
myDDL.Selectedvalue = category_Name //<--this value gets set only when debugging,
End If
End Sub
Private Function GetDataReader(ByVal sqlText As String) As SqlDataReader
Dim dr As SqlDataReader
Dim sqlConn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("TTPRODReportsQuery").ConnectionString)
sqlConn.Open()
Dim sqlCmd As SqlCommand = New SqlCommand(sqlText, sqlConn)
dr = sqlCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
Return dr
End Function
End Class
The dropdownlist does get populated appropriately, however when I attempt to set the value, it doesn't reflect when the page loads; the dropdownlist just gets populated and no value is set to selected in the markup, so the first value is shown by default. The odd thing is that when I'm debugging, the value appears to get set when I step through the function, it's as if the selectedvalue is getting reset as soon as the function exits and proceeds to load the page.
SOLUTION: Had to add a separate function that is called onLoad from the DropDownList after the after Page_Load is done executing. Still unresolved is why the the DropDownList rebinds after the Page_Load.
IN HTML:
<asp:DropDownList DataSourceID="ReqCategoryData" DataTextField="ReqCategory" DataValueField="ReqCategory"
ID="reqCategoryDropDown" runat="server" AutoPostBack="true" OnLoad="DDL_DataBound">
IN CODE-BEHIND
Public Shared category_Name As String = ""
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Page.Title = "Editing record"
''Setup DropDownList SqlDataSource
ddlDataSource.ID = "ReqCategoryData"
Page.Controls.Add(ddlDataSource)
ddlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("TTPRODReportsQuery").ConnectionString
ddlDataSource.SelectCommand = "SELECT TS_NAME AS ReqCategory FROM dbo.TS_SELECTIONS WHERE (TS_FLDID = 5299 AND TS_STATUS = 0) ORDER BY TS_NAME"
Dim args As New DataSourceSelectArguments
ddlDataSource.Select(args)
''Set max length of Title field to 70 characters
Dim dvrTest As DetailsViewRowCollection = DetailsView1.Rows
Dim TitleTB As TextBox = dvrTest.Item(0).Cells(1).Controls(0)
TitleTB.Attributes.Add("onkeydown", "isMaxLen(this)")
TitleTB.Attributes.Add("maxlength", "70")
Dim myDDL As DropDownList = DetailsView1.FindControl("reqCategoryDropDown")
''Perform dropdown list population operations
If Page.IsPostBack = False Then
Dim ticket_ID As String = getDataKey(DetailsView1)
''Fetch Category ID
Dim sqlText As String = "SELECT TS_REQCATEGORY FROM USR_ITFAC WHERE (TS_ID = " + ticket_ID + ") "
Dim reqDataReader As SqlDataReader = GetDataReader(sqlText)
reqDataReader.Read()
Dim category_ID As String = reqDataReader(0)
''Fetch Category name using the categoryID and set as selected value in dropdown list
sqlText = "SELECT TS_NAME FROM TS_SELECTIONS WHERE (TS_ID = " + category_ID + ") "
reqDataReader = GetDataReader(sqlText)
reqDataReader.Read()
category_Name = reqDataReader(0)
myDDL.DataBind()
End If
End Sub
Protected Sub DDL_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
If Page.IsPostBack = False Then
Dim myDDL As DropDownList = DetailsView1.FindControl("reqCategoryDropDown")
myDDL.Items.FindByValue(category_Name).Selected = True
End If
End Sub
View 1 Replies
Jan 30, 2011
I have a page that has 5 sections. Each section takes about 1 second to render.
Page_Load()
{
RenderSection1(); //1 sec
RenderSection2(); //1 sec
RenderSection3(); //1 sec
RenderSection4(); //1 sec
RenderSection5(); //1 sec
}
I would like to speed up the loading of this page. But at the same time make sure that it don't slow down performance of other parts of web application and also do not crash the IIS.
The are several approaches:
Use AJAX requests. Needs to be MVC style requests to Controller or Web Service. Using UpdatePanel around each section will not work - since if I try to submit refreshes to multiple UpdatePanels at the same time using approach here: [URL], the last request will always win: [URL] Use ASP.NET threads described in answer to right way to create thread in ASP.NET web application. So I would use a separate thread for each call: RenderSection1, RenderSection2, etc... Move the logic that takes up time, usually DB requests, into Application Service class in another DLL or External Web Service. Something like
OrderDTO GetDataForViewOrder(int orderID)
{
}
and use multiple threads in that DLL. This approach seems to provide the best scalability, but also introduces UI details into Application Services layer.
View 3 Replies
Feb 14, 2011
about how many are using jQuery to create controls in the DOM after the initial page load.Curious also about any conventions for naming DOM objects in relation to database objects.Seems you could almost render the entire page using jQuery..Does that mean I am only using ASP.Net for the fact that my page methods will run in IIS on the web server?
View 17 Replies
May 14, 2010
I've searched around a lot, and honed this problem down to this case: I'm using the PRG pattern, pragmatically I'm using the same DTO for my post/get actions. It looks like when I have the dto with the data annotation attributes in the get action parameter list, the validation is always displaying errors, every time on initial page load. In some cases this could be desired behavior if you put asterisks in the error message, but how do I get rid of it?
View 1 Replies
Jun 17, 2010
I have an application that initially display 4 grid views at page load. This process takes 50-60 seconds and I would like to change the process to display the web page, show message like "Data being loaded, please wait..." and then spin off a thread that fills the various grid view. When this is done I would programatically like to do a post back to show the result. Not sure if this is possible? I tried something like this:
[Code]....
View 1 Replies
Jul 23, 2010
I am not sure what I am doing wrong in how I set up validation on my models and viewmodels. For some reason on several of my views that contain a validation summary, it appears empty on initial load of the page. On some other pages it appears correctly when the form's data is posted and it does not appear on initial load, this is the way that I would expect it to work.
On the views where this is occuring, my viewmodels are somewhat more complex in that they contain another complex type that I am passing around that has it's own set of DataAnnotation Validation properties, but I have called the validation summary like this; Html.ValidationSummary(true) so that those properties are not validated.
View 5 Replies
Nov 26, 2010
I've been using things like Firebug and YSlow, so I'm not really looking for advice on increasing page load speeds, but I'm wondering does extra imports or using, especially if your importing or using classes that aren't necessary, cause a page to load slower?
View 2 Replies
Mar 23, 2010
Have a look at this link.Web pageIf I want to have this kind of speed in my page load which consists of many thumbnail images. It that image is stored in database or in file system.What measures to take to achive this kind of speed like indexing, denormalization, caching and what else?
View 7 Replies
Apr 13, 2010
I a formview object. I have created an edit temple and an empty template Whehn there is data in the table nor probem When my table is empty i got the empty template to display when I click insert I get the error " Form must be in insert mode" How can I tell if there is no data on the page load so I can maybe do this:
formview.f1.defaultmode = fornviewmode.insert
View 5 Replies
Jan 11, 2011
Do you know of a library/httpmodule for logging slow loading pages (perhaps for a specific treshold) in an ASP.NET environment?
Google did not yield any results.
It would not be too hard to implement on my own, but why re-invent the weel.
View 4 Replies
Mar 4, 2010
I'm doing a web request that is too slow. It takes around 3.2 seconds to GetResponseStream() and .8 seconds to ReadToEnd() If I run the same request in a web browser I get a response in less than a second... I'm wondering what I can do to speed up the request and what might cause it to be slow? Based on other questions I saw here, I disabled the proxy in app.config + enabled max connections, just in case (it's still slow). The section I added was:
<system.net>
<defaultProxy enabled="false">
<proxy/>
<bypasslist/>
<module/>
</defaultProxy>
<connectionManagement>
<add address="*" maxconnection="65000" />
</connectionManagement>
Here's a screenshot of what the code looks like and what is slow:
View 1 Replies
Sep 21, 2010
I've developed a web page Client.aspx that is used for editing a client. This application has been deployed and I made sure that debug='false'.Upon selecting a client from the dropdownlist, his/her information is retrieved for editing. This retrieving process is very slow( about 9 seconds).Except this DropDownList, all the other controls on this page are within the Update Panel. There are 2-3 other Update Panels within the main Update Panel.
When a client is selected from the DropDownList, the Client_ID (DataValueField) is used to retrive the informationSELECT * FROM CLIENTS WHERE Client_ID=1576
This method returns a dataset.In the calling method I'm assigning these values to the respective fields.Some JavaScript is used for validating Phone#.I also have a RadioButtonList on this page. When one of the ListItem is selected I need to disable a TextBox. Even this process is taking much time than expected.
View 4 Replies
Jan 20, 2010
Every now and then (always after a long period of idle-time, e.g. overnight) when I access a site built using asp.net - it takes around 15 seconds to load the page (15 seconds before I see any progress whatsoever, then the page comes up fast).Further pages on that site, or refreshes, are quick as usual - they are also fast on other machines, only the first one seems to take the 'hit'.
Page tracing never through anything up (whole cycle was a fraction of a second) So my question is where else should I be looking? Perhaps IIS? Or could it still be my asp.net app and I'm just looking in the wrong place (the trace) for clues?As I don't have much control over the IIS server, anything I can check through asp.net would be more helpful, before I go ask that particular admin.
View 7 Replies
Feb 20, 2011
I have a MVC view using the following VM.
[Code]....
Currently the page load slow. I am thinking of using JQuery load and render List<A> and List<B> separately and asynchronously. Can I still use MVVM pattern? Or I had to create to controller methods returning List<A> and List<B> separately?]
View 2 Replies
Aug 4, 2010
When we include Javascript files in our aspx files. either we write all the Javascript code in the Head section of aspx or we link to an external Javascript file.
So when the clinet makes a call to that page. Does that mean that all the Javascript will be loaded on the client side?
If that is the case then does not that mean that it will slow down the loading of page as all the Javascript has to be loaded on the client machine?
View 3 Replies