Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Very slow bootstrapping of large templates in IE11 #8533

Closed
@zachsnow

Description

@zachsnow

Issue

We recently started seeing very poor application loading performance in IE11. After some searching, we stumbled onto this Microsoft patch http://support.microsoft.com/kb/2962872 the timing of which coincides well with reports of slowness in our application. (Note in Issues there are known performance issues with the patch).

To reproduce: take a large-ish Angular template (say, 1MB) and attempt to bootstrap it (either automatically or manually). If you are running without KB2962872 installed, you'll see that while it might take a few seconds (significantly longer than Chrome/Firefox/Safari), it will load in a somewhat reasonable amount of time. However, if you install KB2962872 (which should be happening automatically) you'll find that it often takes significantly longer, sometimes as much as 50-100 times longer than Chrome/Firefox/Safari -- seemingly too long for what it's doing.

See this simple example -- I see times of ~1-2s in "modern" browsers other than IE, and anywhere from 10s-90s in IE 11 (and sometimes IE 10, but I wasn't as able to pin that down). The most frequent offender seems to be IE11 under Windows 7 and Windows 8.1, which almost always show really bad behavior in our testing. (We tried several VMs, via VirtualBox and Fusion, and a handful of physical machines).

Thoughts

  • First, even ignoring KB2962872, bootstrapping large templates in IE can be enough slower than other browsers that there may be something funny going on, and it might be worth investigating.
  • Second, once you throw KB2962872 into the mix (which all up-to-date installs of Windows 7 and Windows 8.1 at least should have) performance is so abysmal on large templates as to be unusable; while Microsoft has acknowledged that the patch has a performance regression it is probably worth trying to find a way to work around it anyway.

Unfortunately, I don't know enough about AngularJS internals to make immediate headway, but I'm willing to try if someone has a sense of where to begin.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions