What’s the Difference Between the Web Application Streaming Network and Front-End Optimization?


Recently, I posted here about a question that comes up frequently: what are the differences between our solution – Web Application Streaming – and content delivery networks? Another question we hear less often is, how do we differ from automated front-end optimization (FEO) solutions?

Front-end optimization, a.k.a. FEO, is the process of improving web site or web application performance by applying best practices for web performance to the code and images that make up a web page. Some common examples of this:

  • incrementally reducing the size of code by removing whitespace and comments
  • making sure you apply the right cache-control headers to assets on the page
  • use of domain sharding to increase parallel downloads
  • joining multiple JavaScript files together to reduce the number of unique downloads

Some of the most aggressive approaches unfortunately will go so far as to reduce the quality of images in order to improve performance. That, of course, is a major no-no!

In-house FEO – for those who can afford it

Our experience has been that medium- and larger-sized organizations tend to have the staff and expertise to do FEO work in-house, either as they code the site or as part of their build-and-release process.

Automated FEO – handle with caution

For smaller organizations that don’t have the resources or expertise, automated FEO solutions have become available over the last few years. These solutions automatically apply a set of web performance best practices to a web page. They generally have a set of knobs and dials to turn on and off the various performance tricks you can apply.

Caution should be used when implementing automated FEO. The changes it applies can lead to site breakage. Before you deploy an automated FEO solution, make sure you can conduct heavy testing up front, and whenever you make changes to your site.

In-house or automated, both complement Web Application Streaming

The great thing about both approaches is that you can use both types of front-end optimization with the Instart Logic service, and the benefits are additive. Our solution actually works best when customers already follow web performance best practices. The only thing we do ask that customers change: skip the FEO “habit” of dropping the quality of images in the quest for performance. It’s not worth it and there is a better way!

So what’s the difference between automated FEO and Web Application Streaming? It comes down to three main things:

  • our solution, Web Application Streaming, uses client-side virtualization and is fundamentally different than the backend code rewriting done by FEO;
  • web application streaming is an entirely new method to deliver web pages to browsers – we replace full downloads with smart streaming;
  • instead of resorting to lowering the quality of the user experience in the interest of performance, you leap over that tradeoff and enable a full-quality experience with improved performance.

Let’s drill into each area.

Approach: Virtualization vs. code changes

Automated FEO solutions operate on the backend or in the cloud. As your web pages’ code (such as HTML, JavaScript, and CSS) and assets (such as images) pass through the systems, they are rewritten on the fly. For example there are potentially an unlimited number of different ways to code up displaying an image to the screen across HTML, CSS, and JavaScript. As you would expect, this is a fragile process because each developer will have a slightly different way they write code for the web.

Automated FEO systems have a major challenge: they must first try and figure out what the developer intended to do originally and then rewrite the code to apply a given performance best practice correctly. Additionally now that modern websites and web applications have become so dynamic, many of the decisions on what to show the user are now made in real time in the user’s browser on the client side. This is problematic for automatic FEO approaches that can only operate statically on the backend or in the cloud. As a result, their ability to improve the performance of these types of dynamic real-time applications is hampered.

Dual-side architecture: we’re in the browser, too

Web Application Streaming, on the other hand, uses a smart transparent client-side virtualization layer called NanoVisor.js – written in JavaScript – that runs in the end user’s browser. The NanoVisor.js client virtualizes various low-level APIs in web browsers (such as the DOM API) to learn how web pages load in different browsers and to allow the pages to be streamed (more on that below). By using virtualization, the system can then also hook into the browser at a very low level. For example, it will virtualize low-level image resource and display requests. This all happens in real-time in the user’s browser. So for example, when working with images, it can handle static references such as tags in HTML, or even dynamic run-time references, to load up images in JavaScript executing on the client in real-time.

In the case of Web Application Streaming, our system just follows a set of HTML5 and browser specifications to virtualize a narrow set of resource calls to work our magic. So rather than trying to reverse-engineer the millions of ways people write code for the web, we just hook into the low level browser APIs that display an image to the screen. It’s much safer and it’s easy to ensure correctness of code and execution.

Delivery: Streaming vs. downloading

The next major difference has to do with how the web page is sent to the web browser. Automated FEO does not alter the way objects are delivered to a web browser. It affects (shrinks) the objects themselves by rewriting code and changing the quality of images, but at the end of the day the web browser just downloads objects the same way it did before. Once it starts to download an item, it keeps going until it finishes and then moves onto the next item on the page. So the more the objects are used and displayed on the page, and the larger they are, the longer it takes to download and display.

Streaming already proven with video and Windows application streaming

The Instart Logic approach uses streaming to intelligently send the most important portions of web pages first and bring down other information immediately after. This is the same approach video streaming and Windows application streaming have used for years. You stream the most critical information for the user experience up front, so the experience quickly becomes interactive. Then you bring the remaining information down in the background automatically. A good example of this: painting images on the screen. The traditional download approach would bring the entire set of image bytes down to make the initial paint of the screen. By contrast, with streaming we can do multiple paints by sending a portion of the image bytes down first – the most-needed aspects of the image – and then bring the remaining bytes down in the background right after. We also apply the same smart streaming to other web components such as HTML and Flash.

Quality: full quality vs. degraded quality

The last major difference has to do with the quality of images. Increasingly, images are a major determinant of how long users wait for web pages to download and display. While we are big fans of web performance, we do not like to reduce image quality. But not surprisingly, the biggest improvements in download times with automated FEO solutions are achieved by reducing image quality. Downgrading image quality is certainly not the original goal for most websites. Web application streaming provides a better way!

With web application streaming we deliver the best of both worlds. You get a fast initial display of the website or application, combined with delivery of a full-fidelity experience. In fact, when customers start using our technology to improve their site performance, they find that web app streaming gives them the flexibility to build entirely new, visually richer, and more dynamic user experiences.


We are serious advocates of increasing the performance and quality that make up every web experience. Front end optimization, either done internally or using an automated system, is fully compatible with – and should add to the acceleration benefits of – our web application streaming technology. The only aspect of FEO that we don’t like is dropping the quality of the experience in the quest for speed.

The web application streaming technology we have invented at Instart Logic is a great new way for you to bypass that tradeoff and increase performance without dropping the quality of your end users’ experience. We would invite you to contact us for a free trial to see how we can dramatically improve your web experience. You may find that web application streaming unleashes your ability to dream up new amazing experiences in the future, without having to worry about negative performance impacts upon your users.