Third-party widgets abound these days on the Web. Widgets, typically implemented with a snippet of JavaScript, are an easy way to add useful functionality to your website. The problem with all these widgets is they can cause indeterminate delays if any third party servers are slow.
Webmasters want easy ways to add useful functionality to their sites. One popular way to add functionality is to use a third-part tool, called a widget. A snippet of JavaScript is placed in the target web page, which calls an off-server JavaScript that does some useful task. There are widgets for many popular tasks, including Google Analytics which is used by more than 10 million websites. Other widgets include Jquery, survey widgets, advertising, Facebook likes, Google Plus, RSS headlines, and more.
The problem with relying on third party widgets is that they can slow down your site. When you load JavaScript or other resources from off-site you can cause indeterminate delays for your own site. Inconsistency in response times can cause a reduction in what Chris Roast calls "attunability" or the ability to attune to the response times of websites. Depending on how the widget is placed within your pages (HEAD, top of BODY, bottom of BODY element), a slow widget can at the least slow down the loading of your pages (bottom of BODY), and at worst hang your pages altogether so users don't see any content (top of BODY). Loading multiple widgets also introduces DNS and network overhead. An anonymous example is shown in Figure 1.
Even popular widgets can have negative effects on website performance. Google Analytics is widely used to track statistics about websites (formerly Urchin). On Thanksgiving weekend of 2012, a popular website for computers and laptops suffered because Google was slow that day (Sunday, November 24, 2012, see Figure 2). When configuring a popular Lenovo laptop (Thinkpad X230) Lenovo.com served up a page that hung for more than a minute, waiting for Google to deliver its payload to Lenovo.com.
One solution is to localize the external JavaScript to avoid the uncertain off-site delay. Moving the script from the top of the body to the bottom, and caching it locally improved performance by 13% in our tests. This is with a full-speed Google on board. When Google is slow or unresponsive (as it is rarely, but it happens), your site can suffer. If the external resource changes frequently you can create a CRON script to copy the external resource periodically to keep it up to date.
Another example is PC Magazine. Searching for the top 100 websites, the page was delayed while waiting for an external server to deliver a programming API (see Figure 3).
To be fair this behavior tends to happen on busy online shopping days like Cyber-monday, Black Friday, and the week before Christmas, but this third-party slowdown can happen at any time.
Many of these external resource delays are preventable. The solution is to periodically cache the resource locally on your server and serve it locally. You can use a CRON script to periodically copy the external resource over to your server. Here are some techniques you can use to minimize widget overhead.
External widgets can cause indeterminate delays of your webpages, which can reduce response time consistency. If your users cannot rely on consistent performance of your site, they are more likely to go elsewhere. To improve attunability, localize external resources to reduce reliance on third-party servers.
By website optimization on 26 Nov 2012 PM