All about Chrome Frame and why it's the way forward
4 April 2012 - Will Morgan
Having just wrapped up the bulk of the development of a cutting edge, graphics heavy module for a client, I was left with the challenging prospect of making it work in IE.
The only trouble is that when you’re trying to get things “working” in Internet Explorer, the definition of “working” can vary from version to version, and computer to computer. This especially holds true when we’re talking about SVG, and its less able cousin, VML.
What is SVG?
SVG stands for Scalable Vector Graphics. In layman terms, it’s a mark up language similar to HTML – what your web browser uses to understand webpages, only that it’s dedicated to drawing 2D shapes. It’s been around for over 10 years – its initial release was in 2001 but has been left widely ignored due to browser support issues, that have since been eliminated.
What is VML?
VML stands for Vector Markup Language. It’s to SVG what the ape is to the human, and works only in Internet Explorer versions up to version 9, where it was abandoned in favour of SVG. It’s an older language and was abandoned in 1998, and yet its implementation has been mangled in Internet Explorer all the way up to version 8, which was released in 2008. As you can imagine, 10 years after development ceased, lots of bad things happened.
Translating between SVG and VML
Lost in translation...?
After the module was finished and ready to go, we handed it over to the client for some user acceptance testing. As is normally the case, it worked great in Firefox and Chrome, and even IE9, but in IE8 there were some serious performance problems, several times worse than IE7. So I went back and tried to make the code as light as possible on the browser’s processor and memory usage. I benchmarked several different ways of animating shapes, and while there was a slight improvement in performance, we were pushing IE’s VML engine to its limit – effectively redlining the browser. We still had performance that was choppy at best.
It looked as if IE8’s VML engine had taken one step forward and two steps back from its IE7 predecessor. Looking at what the greater development community was saying, we were right.
As you can see, IE9 is 17 times faster than IE8.
However, have a look at Chrome 11. Bearing in mind these results are a year old and they’re slightly contested, it’s still shown in the results graph as one of the fastest browsers. What if there was a way to use another browser’s rendering engine instead of being stuck in the slow lane? Well, there is...
At last, an extension for IE that isn’t a shopping site toolbar.
What does it do?
In essence, all it does is uses the engine that Chrome uses instead of IE’s. That engine is called Chromium. This isn’t installing a new browser; it’s simply offloading the display of the webpage to something else. It’s designed to be seamless, so that users who know nothing more of a big blue E as “Internet” will never get confused, and so that users inside large companies with change resistant IT policies aren’t left behind with their legacy intranet apps.
How is it deployed?
Supporting IE6 users, kind of
As the browser merely acts as a host for the extension, you can include IE6 user support with your application, albeit with a tiny catch. In fact, it’s one of the main reasons why Chrome Frame was created – it allows the best of today’s web standards for yesterday’s web browsers, without any software having to change.
It’s also opt-in, which means you can selectively use it for all or few pages. For a relatively late change in the web app, this was essential for minimising testing footprint. We decided for the time being it would be best to be pragmatic and apply Chrome Frame only to the module that really needed it.
Having heard of Chrome Frame for quite some time, I finally had the perfect time to use this compatibility silver bullet. It’s like turning your grandma’s black and white telly in to a fancy HD TV with minimal hassle.
However, it’s still important that you give some level of support to users who decide not to install the plugin.
12 July 2013 - Will Morgan