This is a migrated thread and some comments may be shown as answers.

Please Help extreme performance issues in IE8

5 Answers 77 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Patrick
Top achievements
Rank 1
Patrick asked on 24 Feb 2012, 01:39 AM
Hi,
 I have a User Control that has 7 Labels (Viewstates are disabled).
 1 RadDatePicker
 1 RadTextbox
 4 aspTextBoxes

I have 2 RadInputManagers
1 makes 2 textboxes NumericTextBoxes of Number Type with 0 decimal digits
1 enables me to change the Type and Decimal Digits from the code-behind based on the Properties of the User Control

Let's call this control KPIControl

The KPIControl takes up about 34k bytes when it has meaningful data attached to i.

These UserControls are generated via a RadListView so there could be 1 to Many UserConrols depending on other factors.

I have 2 questions.
1) Is there a way to lower that 34k overhead anymore?
     There can easily be 50, to 100+ of these controls rendered on a single page.
     The only way i can think of to decrease the size anymore is to not use Telerik Controls, use normal textboxes and do my own number validation via Javascript that I store in an external JavaScript file. (But that defeats the whole purpose of telerik controls)

2) If i setup a page to have 100 of these controls (~3.4mb) rendered i run into SERIOUS Performance issues with IE8 (the browser used by my company)
  To calculate how long it takes to load the page I set variable to the current time and then in the Body onload event I calculate the time difference.
In IE8 it is taking more than 2.5 seconds Q3 2011 (not as good as FF, but acceptable) and 3.75 seconds (Q1 2012) to Load the Page AND THEN, it takes another 18+ seconds(unacceptable) for either the page to render the controls or unfreeze the IE8 window. And then on a postback, IE8 will pop-up an alert telling me there is a long running script, which is unacceptable.

 In contrast it takes Firefox 1.2 seconds to load the page and no extra time to render it.
 also, It takes slightly less using Q3 2011 Radcontrols versus Q1 2012 controls
In Summary, 
 
Time to Load and Display 100 KPIControls:
Firefox: 1.25 seconds (Q3 2011)
IE8:       20+ seconds. (Q3 2011) //2.5seconds load + 17.5+ seconds till render or till unfrozen
Firefox: 1.75 Seconds (Q1 2012)
IE8:     23+ seconds (Q1 2012)   //3.75 seconds load + 17.5 + seconds till runder or till unfrozen


And on a side note what the heck did Q1 2012 do to the Styling of RadInput Controls? It totally fubared the look of my site when i upgraded from Q3 2011 to Q4 2012.

Please HELP!
Thanks,
~Patrick

5 Answers, 1 is accepted

Sort by
0
Vasil
Telerik team
answered on 28 Feb 2012, 04:56 PM
Hello Patrick,

The RadTextbox as well as other RadInputControl inheritors has lots of events attached to make possible changing the styles on hover/blur/focus/error/empty messages etc. Additionally the client side object stores and changes the applied classes, keeps 3 different values (validation, display and edit). And this can cause performance problems in IE8 when there are lots of inputs since it's JavaScript engine is not so optimized like this in the modern browsers.
You could remove the RadTextBox and the RadDatePicker and use the RadInputManager that you have already set on your page to manages both inputs. The manager is designed to work with many inputs and this will bring you some performance benefits when it comes to styling all these controls.

Greetings,
Vasil
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Patrick
Top achievements
Rank 1
answered on 28 Feb 2012, 08:10 PM
Thanks,
 I have another issue, see Part II for my continued issue.

Part I:
 To partly answer my own Question for future readers:
 1) If you have several RadDatePickers - USE a SHARED Calendar. (personally, i now just hide a SharedCalendar on my Master Page and making it available via the code-behind. I then set the SharedCalendar property on the OnInit Event in my BasePages Codebehind and have any RadDatePicker call that method OnInit.
2) If your application requires A LOT of Validated Controls on a Page - use the RadInputManager! It's a great Tool! -Once Again I personally put mine in my Master Page and expose it via the CodeBehind.

Part II: Further Issue
 Changing everything to asp:TextBoxes and using the RadInputManager was the way to go for a big performance increase.

 However, the issue is now that after the load, on any subsequent Postback OR Callback, IE freezes for 4+seconds before handling the event. Is this still a Javascript issue with IE8 or is there something that can be changed to keep this from happening?
As it is now, the un-responsive browser on postback or callback will be unacceptable to my users and it looks like i'll have to forgo using any Telerik controls and write my own javascript for validation...

Hopefully there are other actions to take to further rectify the issue.

Thanks,
~Patrick
0
Vasil
Telerik team
answered on 29 Feb 2012, 01:18 PM
Hi Patrick,

Thank you for sharing your experience with the community.

About the second issue, you could show a LoadingPanel to indicate to your users that there is some computing on the page. See this help topic if you are interested in:
http://www.telerik.com/help/aspnet-ajax/ajax-show-hide-loadingpanel.html

If you need only the validation part of the manager, you could gain some performance optimization if you write your custom validation especially for the case. Since the Manager handles the styles and formats for the inputs, it never could be fast as applying validation script only.

Kind regards,
Vasil
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Patrick
Top achievements
Rank 1
answered on 29 Feb 2012, 04:36 PM
Hi,
 A couple of things here.
Using IE Profiler i noticed that the calculations it was doing on postback or callback was due to Validation OnSubmit.
I changed my InputManager to only validate on Blur (which fits my Requirement since I can do final validation in the code-behind).
This pretty much got rid of the lag in IE on a submit.

However, I noticed that since all of my UserControls use the same InputSettings in the Manager, that a submit in one user control would not go through if there was invalid input in another user control. //not good

So I said hey, I'll just dynamically create my InputSettings per control and set all the UserControl's input and sumbit controls and the InputSettings to have the same Unique ValidationGroup and that should handle the situation.
I'll still have one InputManager, just a lot of InputSettings.

Problem: This doesn't work. It does prevent one UserControl's submit from not firing if another UserControl has invalid input... but it doesn't catch invalid controls in the same UserControl...
My Controls are dynamic, they are generated by RadListView's and they don't know what type of Validation they need until they are individually databound. For some reason it doesn't look like the RadInputManager likes this scenario?

How can I get ValidationGroups working in the RadInputManager?

My Use Case:
 I have a Master Page. In my content Page I generate UserControls via a RadListView. I do not know what type of InputSettings I will have until after the Controls are Created and DataBound.
In my DataBind Event my Control get's it's NumericType and the number of DecimalPlaces it needs. (there are 13 different unique possibilities). So after it has that data I Dynamcially create the input settings (including the unique ValidationGroup) and Add them to my SharedInputManager's input settings. But this doesn't work.


0
Vasil
Telerik team
answered on 05 Mar 2012, 01:12 PM
Hello Patrick,

The RadInputManager does not manages the ValidationGroup directly set on the target inputs. It manages only the ValidationGroup that is set to the InputSetting like:
  <telerik:RadInputManager runat="server">
    <telerik:DateInputSetting>
      <Validation ValidationGroup="group1" />
.......
.......
    </telerik:DateInputSetting>
  </telerik:RadInputManager>

So you could use this property to specify the validation group for all inputs with the given settings.  However validating each input in different group is possible only if you do it manually using different asp:Validators with different groups for each one.

All the best,
Vasil
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Tags
General Discussions
Asked by
Patrick
Top achievements
Rank 1
Answers by
Vasil
Telerik team
Patrick
Top achievements
Rank 1
Share this question
or