<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Digital Fulcrum</title>
	<atom:link href="http://digital-fulcrum.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://digital-fulcrum.com</link>
	<description>Digital Fulcrum</description>
	<lastBuildDate>Mon, 20 Feb 2012 16:01:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Three Pillars of Success: People</title>
		<link>http://digital-fulcrum.com/three-pillars-of-success-people/</link>
		<comments>http://digital-fulcrum.com/three-pillars-of-success-people/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 16:01:15 +0000</pubDate>
		<dc:creator>blineweaver</dc:creator>
				<category><![CDATA[ad operations]]></category>
		<category><![CDATA[ad serving]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=963</guid>
		<description><![CDATA[We introduced the 3 Pillars of Success (People, Process and Technology) several weeks ago, to ultimately discuss each one in detail, and in my opinion, the People Pillar is the most important pillar. With fantastic people in your organization, you &#8230; <a href="http://digital-fulcrum.com/three-pillars-of-success-people/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We introduced the 3 Pillars of Success (People, Process and Technology) several weeks ago, to ultimately discuss each one in detail, and in my opinion, <strong>the People Pillar is the most important pillar</strong>.</p>
<p>With fantastic people in your organization, you can overcome just about anything. Whether it is a lack of standard/repeatable processes or poor technology, great people always find a way to overcome. Granted, lacking in the other areas and expecting your people to overcome is not ideal, but more often than not, your people do overcome for deficiencies in other areas. However, the reverse does not hold true where great technology or process will make up for unqualified people, it just doesn’t work that way.</p>
<p>Ad Operations is a great example of People overcoming technology or process challenges to get the job done. Just take a look at your organization. Many organizations today are using out of date technology or inefficient processes, yet your people still get the job done. The most prominent technology within Ad Ops is MS-Excel. Excel is so widely used because the processes and technology that Ad Ops personnel need are not available within their organization, thus organizations “make do” with Excel, rather than invest in the best tools and processes available to help their people.</p>
<p>Assuming everyone is in agreement that the People Pillar is the most important pillar of your organization; it begs the question <strong>“Are you investing in your people”</strong>? Hopefully the answer is yes, but far too often what should be a booming “yes” is more of a meek “well, we are just too busy to deal with this right now”. It’s not a conscious decision to NOT invest, but it is a lack of decision because it never seems like the right time to take proactive steps.  If that is the case, then shame on you. Your people matter and when they walk out the door every evening, that is your most valuable asset heading home. It doesn’t take much to get them a refresher training course, develop basic on-boarding materials for new hires, invest in new technology to save them time (alright, sometimes new technology is expensive) or do any number of things to make their lives easier.</p>
<p>Does your team have the right mix of skills to be effective?<br />
Do junior folks see a clear career ladder within ad ops?<br />
Do senior folks feel challenged?<br />
Are your people cross trained to be able to help one another?</p>
<p>All of these are questions that deserve a resounding “YES”, but far too often are ignored which is why it is critically important for organizations to proactively invest in their people. They need not be expensive or time consuming, but as the saying goes, <strong>“Tiny Hinges Swing Big Doors”,</strong> so get started in investing in your People today!</p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/three-pillars-of-success-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TagMan and Digital Fulcrum Join Forces to Optimize Performance of 3rd Party Tags</title>
		<link>http://digital-fulcrum.com/tagman-and-digital-fulcrum-join-forces-to-optimize-performance-of-3rd-party-tags/</link>
		<comments>http://digital-fulcrum.com/tagman-and-digital-fulcrum-join-forces-to-optimize-performance-of-3rd-party-tags/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 17:04:37 +0000</pubDate>
		<dc:creator>klefew</dc:creator>
				<category><![CDATA[ScriptLoading]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web performance optimization]]></category>
		<category><![CDATA[webperf]]></category>
		<category><![CDATA[wpo]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=929</guid>
		<description><![CDATA[Integrated Solution Gives Brand Marketers Faster Page Load Times and a Superior Online Experience NEW YORK, NY – February 9, 2012 – TagMan (www.tagman.com), the global leader in tag management, announced today an exclusive strategic partnership with Digital Fulcrum (www.digital-fulcrum.com), &#8230; <a href="http://digital-fulcrum.com/tagman-and-digital-fulcrum-join-forces-to-optimize-performance-of-3rd-party-tags/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Integrated Solution Gives Brand Marketers Faster Page Load Times and a Superior Online Experience</p>
<p>NEW YORK, NY – February 9, 2012 – <a href="http://www.tagman.com">TagMan</a> (www.tagman.com), the global leader in tag management, announced today an exclusive strategic partnership with <a href="http://www.digital-fulcrum.com">Digital Fulcrum</a> (www.digital-fulcrum.com), provider of the Ghostwriter web performance optimization technology.</p>
<p>Through the partnership, TagMan is further expanding its tag management functionality to deliver optimal page performance for all types of tags, combining its unique ability to support any type of tag with Digital Fulcrum’s expertise in performance management.</p>
<p>“By joining forces with the leader in tag management technology, we’re able to bring improved site performance to a much broader market,” said <a href="http://digital-fulcrum.com/about-2/the-team/kevin-lefew-managing-partner/">Kevin LeFew</a>, managing partner for Digital Fulcrum. “Our solution, combined with the services and metrics that TagMan delivers, creates an incredibly valuable tool that improves user experiences, better informs decision making, and ultimately drives revenue. We are pleased to be collaborating on enhanced services for marketers and publishers alike.”</p>
<p>The partnership will bring even stronger performance optimization to TagMan clients for their third party marketing tags. TagMan’s flexible system already can serve tags asynchronously, which allows tags to load independently of the page content rather than blocking it. TagMan also offers a solution to accelerate the loading of blocking (synchronous) tags using its patent pending smart loading approach (see our recent <a href="http://www.tagman.com/index.php/smart-tag-loading-white-paper">Tag Loading Whitepaper</a>). Ghostwriter extends this solution further by allowing synchronous tags to be executed asynchronously without modifying the code, which enables TagMan to be used asynchronously with any third party tag.</p>
<p>“We’ve seen the majority of our current vendor base tags, which exceed 250, were written before browsers started to implement HTML5 features like asynchronous JavaScript,” said <a href="http://www.tagman.com/index.php/about-management-team.html">Paul Cook</a>, CEO and founder of TagMan. “We’ve worked hard to optimize the dynamic loading of these synchronous tags, and Ghostwriter provides another alternative. Integration with Ghostwriter has helped us reach our target of support for any tag within an asynchronous container, allowing companies to de-couple their tags from their website performance and something alternative Tag Management Systems simply cannot do.<br />
“No longer will marketers need to sacrifice functionality and page performance for their third party tags,” he continued. “They’ll have access to better data, faster page loading, and the freedom to work with any vendor. We are very excited by this partnership and it is already live and integrated for several clients.”<br />
TagMan can be found on Twitter at <a href="http://www.twitter.com/tagman">www.twitter.com/tagman</a>, and also has a LinkedIn page at http://<a href="http://linkd.in/yYGKEV">linkd.in/yYGKEV</a>. You can read the company’s blog at <a href="http://blog.tagman.com">http://blog.tagman.com/</a>.</p>
<p>About <a href="http://www,tagman.com">TagMan</a><br />
TagMan is the global leader in tag management, with the industry&#8217;s most mature and proven platform for the enterprise. Since launching the first, independent tag management platform in 2007, TagMan has helped over 100 customers solve tagging, site performance and attribution-related challenges. With over 250 vendor tags currently implemented, the award-winning TagMan platform provides customers like Travelocity, Virgin Atlantic, Subaru and others complete agility in managing existing partners and working with new technologies without the burden of costly implementation projects and resources. More information is available at www.tagman.com.</p>
<p>About <a href="http://www.digital-fulcrum.com">Digital Fulcrum</a><br />
Founded by a team of online advertising experts with years of experience in facing publisher challenges, Digital Fulcrum is dedicated to providing its clients with superior services and solutions. GhostWriter is a transformational, patent pending, Web Performance Optimization solution that allows publishers, marketers and others to optimize, inspect, manipulate and monitor like no other. Digital Fulcrum is also in a deep partnership with AdMonsters providing all services offered via <a href="http://www.admonsters.com/consulting">Admonsters Professional Services (APS)</a> for North America.</p>
<p>Contact us today to learn more about what Digital Fulcrum can do for your business.  <a href="http://www.digital-fulcrum.com">www.digital-fulcrum.com</a> or email to: info@digital-fulcrum.com. You can find our blog at http://<a href="http://digital-fulcrum.com/blog/">digital-fulcrum.com/blog/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/tagman-and-digital-fulcrum-join-forces-to-optimize-performance-of-3rd-party-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 Pillars of Success: People, Process and Technology</title>
		<link>http://digital-fulcrum.com/3-pillars-of-success-people-process-and-technology/</link>
		<comments>http://digital-fulcrum.com/3-pillars-of-success-people-process-and-technology/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 01:56:05 +0000</pubDate>
		<dc:creator>blineweaver</dc:creator>
				<category><![CDATA[ad operations]]></category>
		<category><![CDATA[ad sales systems]]></category>
		<category><![CDATA[ad serving]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=910</guid>
		<description><![CDATA[For many of you, this is not new, but it is definitely true and worth repeating.  For any project or organization to be successful, there must be the right balance of People, Process and Technology.  As Ad Operations professionals, you &#8230; <a href="http://digital-fulcrum.com/3-pillars-of-success-people-process-and-technology/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>For many of you, this is not new, but it is definitely true and worth repeating.  For any project or organization to be successful, there must be the right balance of People, Process and Technology. </p>
<p>As Ad Operations professionals, you are constantly faced with doing more with less and are far too often placed into a reactive posture, when to truly drive revenue you need to be in a proactive posture.  Think of it is a 3-legged stool, where all 3 legs are important and if any 1-leg is missing the stool just won’t work.  Well, this is exactly the same for your organization.  If you don’t have the right people, the job won’t get done.   If you don’t have the right process, the job won’t get done.  If you don’t have the right technology, the job won’t get done.  All 3 of these legs are important and it is incumbent on you as ad operations leaders to insure all 3 legs are strong and able to support and proactively drive your organization forward.</p>
<p>Over the next several weeks, we’ll take each of these pillars and talk about them in greater detail, but in the meantime, I challenge each you to take a step back and think about your specific situation and answer the following questions:</p>
<p>-          Do I have the right people to deliver today as well as in the future?</p>
<p>-          Do I have the right processes in place to get the job done today as well as in the future?</p>
<p>-          Do I have the right technology to execute?</p>
<p>-          What do my people need to get their jobs done better, faster, more accurately, etc.?</p>
<p>-          Does my technical infrastructure align to and support the needs of my organization?</p>
<p>-          Do I have consistent and repeatable processes in place and are they as efficient as possible?</p>
<p>Weigh in and tell us, of People, Process and Technology, what do you feel is the most important to your organization.</p>
</div>
<p><!-- output author photo/bio if exists --></p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/3-pillars-of-success-people-process-and-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digital Fulcrum Presents at the University of Virginia</title>
		<link>http://digital-fulcrum.com/digital-fulcrum-presents-at-the-university-of-virginia/</link>
		<comments>http://digital-fulcrum.com/digital-fulcrum-presents-at-the-university-of-virginia/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 01:51:16 +0000</pubDate>
		<dc:creator>blineweaver</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ad operations]]></category>
		<category><![CDATA[GhostWriter]]></category>
		<category><![CDATA[web analytics]]></category>
		<category><![CDATA[web performance optimization]]></category>
		<category><![CDATA[wpo]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=899</guid>
		<description><![CDATA[Just the other week, a few of us had the privilege of going to Charlottesville to talk to a class of undergraduate students at the University of Virginia.  Granted, any excuse to get back to UVA is always great, but &#8230; <a href="http://digital-fulcrum.com/digital-fulcrum-presents-at-the-university-of-virginia/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just the other week, a few of us had the privilege of going to Charlottesville to talk to a class of undergraduate students at the University of Virginia.  Granted, any excuse to get back to UVA is always great, but on this occasion it was an opportunity to talk about Web Analytics, Online Ad Operations, and Web Performance (specifically our <a title="GhostWriter" href="http://digital-fulcrum.com/solutions/ghostwriter-complete-control/" target="_blank">GhostWriter WPO product</a>) with a 4<sup>th</sup> year class at the <a title="McIntire School of Commerce" href="http://www.commerce.virginia.edu/Pages/default.aspx" target="_blank">McIntire School of Commerce </a>(undergraduate business school at UVA). </p>
<p>It was great to see students taking an interest in our space, and the questions they were asking were fantastic.  The core of our visit was to discuss web and data analytics, but nothing was off limits and the students were really engaged and eager to better understand the ad operations ecosystem.  Questions ranged from how to make sense of it all to what will it look like in 2 years and it was truly a pleasure to talk about our space and know that some of today’s brightest college students are eager to jump into the world of ad operations and related technologies.  The students were quick to confirm that speed matters and a poor user experience is unacceptable from a users’ perspective, providing further confirmation that GhostWriter is a welcome solution when addressing<a title="Omaha.com Reduce Page Load Times" href="http://digital-fulcrum.com/about-2/press-releases/omaha-world-herald/" target="_blank"> page load times</a> and <a href="http://digital-fulcrum.com/measure-ad-load-time/" target="_blank">bad ads</a>.</p>
<p>To learn more about our visit to UVA, see the related <a title="McIntire School of Commerce" href="http://www.commerce.virginia.edu/news_events/archive/2011/11/04/digital-fulcrum-class-visit.aspx" target="_blank">McIntire blog post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/digital-fulcrum-presents-at-the-university-of-virginia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Component Level Real-User Monitoring</title>
		<link>http://digital-fulcrum.com/url-level-real-user-monitoring/</link>
		<comments>http://digital-fulcrum.com/url-level-real-user-monitoring/#comments</comments>
		<pubDate>Thu, 12 May 2011 16:18:40 +0000</pubDate>
		<dc:creator>Will Alexander</dc:creator>
				<category><![CDATA[network monitoring]]></category>
		<category><![CDATA[GhostWriter]]></category>
		<category><![CDATA[scriptloading]]></category>
		<category><![CDATA[web performance optimization]]></category>
		<category><![CDATA[webperf]]></category>
		<category><![CDATA[wpo]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=815</guid>
		<description><![CDATA[GhostWriter lets you prioritize when and how you load third-party content, like ads.  Your users see what they&#8217;re looking for sooner which increases engagement and improves your search engine rankings. One of the ways it does this is by introducing &#8230; <a href="http://digital-fulcrum.com/url-level-real-user-monitoring/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>GhostWriter lets you prioritize when and how you load third-party content, like ads.  Your users see what they&#8217;re looking for sooner which increases engagement and improves your search engine rankings.</p>
<p>One of the ways it does this is by introducing a smarter replacement for the standard document.write method.   Couple this intelligent proxy with GhostWriter&#8217;s hooking mechanisms and you can measure the <strong>performanc</strong><strong>e</strong> <strong>of</strong> <strong>individual</strong> <strong>components</strong> <strong>from the end-user perspective </strong> and send this data to a system like Google Analytics.  </p>
<p>The reports lets you see a list of all third-party resources.</p>
<blockquote>
<table style="margin: 0; padding: 0; width: 650px" >
<tr>
<td  valign=middler width=3750px> TYPE://URL </td>
<td> Total / Unique Views </td>
<td> Total/Avg Time (ms)</td>
</tr>
</table>
<p> <img class="alignnone size-full wp-image-817" title="sample component load report" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/screenshot8.png" alt="" /></a></p>
</blockquote>
<p>Our <a title="Measuring Ad Load times" href="../measure-ad-load-time/" target="_self">post last week</a> talked about the <strong>startOffset </strong>and <strong>loadTime </strong>events; however, we&#8217;ve now added the <strong>componentLoad </strong>and <strong>componentTimeout </strong>events to <a href="http://digital-fulcrum.com/ghostwriter/eg/reporting" target="_blank">this page</a>. Here&#8217;s an overview of what each one means:</p>
<ul>
<li><strong>startOffset</strong> &#8212; The time it took for the ad to start loading</li>
<li><strong>loadTime &#8212; </strong>Once the ad started, how long the daisy chain of scripts took</li>
<li><strong>componentLoad </strong>&#8211; <em>Individual load times for each resource the ad referenced</em></li>
<li><strong>componentTimeout </strong>&#8211; <em>Resources whose load time exceed our threshold</em></li>
</ul>
<p>Let&#8217;s see how we can use these event metrics to identify the performance of our ads.  Unlike existing real-user monitoring services, we&#8217;ll show you how to get <strong>actionable insights </strong>out of this information.</p>
<p>This screenshot shows each of those metrics for the 160&#215;600 position.  Clearly we have a problem  &#8212; average load time is over 18 seconds!!</p>
<p><a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/average-for-all-labels-for-160x600.png"><img class="alignnone size-full wp-image-817" title="average for all labels for 160x600" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/average-for-all-labels-for-160x600.png" alt="" width="1024" height="208" /></a></p>
<p>Drilling down we can see the distribution of load times.  In the left-most column we have a time bucket.  We&#8217;ve set the middle column to show us the total number of events while the third shows the percentage contribution.</p>
<p>For the most part, this ad loads just fine &#8212; 88% of the time it finishes in under 1s.</p>
<p><a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/160x600-loadTime-histogram-percentage-of-total-events.png"><img class="alignnone size-full wp-image-818" title="160x600-loadTime-histogram-percentage-of-total-events" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/160x600-loadTime-histogram-percentage-of-total-events.png" alt="" width="1035" height="366" /></a></p>
<p>So why is our average load time 18s??</p>
<p>Switching the top-right drop-down menu to show each bucket&#8217;s contribution to the overall Event Value makes it easy to see why &#8212; The 30s bucket contributed to 94% of the total event value!</p>
<p><a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/160x600-loadTime-histogram-percentage-of-total-value1.png"><img src="http://digital-fulcrum.com/wp-content/uploads/2011/05/160x600-loadTime-histogram-percentage-of-total-value1.png" alt="" title="160x600-loadTime-histogram-percentage-of-total-value" width="1052" height="366" /></a></p>
<p>At this point, we still have no idea what actually <strong>caused </strong>this latency.  With <strong>other real-user monitoring</strong> <strong>services</strong> this is where <strong>the road ends. </strong>You know there&#8217;s some kind of intermittent issue that&#8217;s seriously affecting a small percentage of your end users, but nothing else.</p>
<p>Sometimes knowing something&#8217;s broken is more frustrating than not knowing at all.  <em>Was it your ad server?  A third-party tag?  Call to a remnant provider? </em>  Existing solutions treat third-party content as a black box.  You can see how long it took to go through it, but you have no idea what happened while you were in there.  </p>
<p>GhostWriter pries the lid off the box and let&#8217;s you finally see inside!  </p>
<p>Drilling down into the <strong>componentLoad</strong> event, we can see the problem is due to a SCRIPT from the URL digital-fulcrum.com/gw/t/ads/ad14.js.  The last column of that row shows the average load time was 31.6 seconds!!  We can also see all of the URL&#8217;s that were loaded into that position and determine if any of them are contributing to the problem.  </p>
<p><a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/components-sorted-by-load-time-for-160x600.png"><img class="alignnone size-full wp-image-820" title="components sorted by load time for 160x600" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/components-sorted-by-load-time-for-160x600.png" alt="" width="1036" height="352" /></a></p>
<blockquote><p><strong>Please Note: </strong>We&#8217;ve blurred out the actual URL&#8217;s since we deliberately induced some of this latency.  These numbers are not indicative of actual service levels.</p></blockquote>
<p>Beyond just performance data, the report helps you understand the variety of sources loading on your pages.  Fine-grained ad targeting or use of a remnant network masks a lot of these providers in synthetic transaction waterfall data.  As we&#8217;ve mentioned, <strong>GhostWriter&#8217;s unique ability to simulate the <em>document.write</em> method unlocks this level of detail. </strong></p>
<p><a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/slowest-loading-components1.png"><img class="alignnone size-full wp-image-823" title="slowest loading components" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/slowest-loading-components1.png" alt="" width="1033" height="581" /></a></p>
<p>This kind of insight helps you enforce service level agreements, can help determine inventory impact when modifying your site layout, helps identify and correct problems being experienced by actual end-users and extends your monitoring coverage to every page, user and component!</p>
<p>Moreover, you can use your existing tools! GhostWriter isn&#8217;t limited to just Google Analytics reporting.  It can  send the data anywhere you want like another analytics tool like <a href="http://www.omniture.com/en/" target="_blank">Omniture</a> or a Network Monitoring Service like <a href="http://sciencelogic.com" target="_blank">EM7</a>, <a href="http://www.bmc.com/products/product-listing/ProactiveNet-Performance-Management.html" target="_blank">BMC</a> or <a href="http://www.nagios.org/" target="_blank">Nagios</a>.</p>
<p>Your users hold you responsible for the performance and availability of the third-party content on your site!  Isn&#8217;t it time you monitored that content with the same level of detail, frequency and precision you apply to your own systems?</p>
<p>Let us show you how GhostWriter can increase engagement, improve search engine rankings and allow you to become proactive in your relationship with third-parties.   <a href="../solutions/ghostwriter-complete-control/ghostwriter-code-sample/" target="_blank">Download</a> the sample code or <a href="../solutions/ghostwriter-complete-control/submit-a-url-for-testing" target="_blank">submit your URL</a>.   Take <strong>complete control </strong>of your site!</p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/url-level-real-user-monitoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Got ad performance problems?  Find out!</title>
		<link>http://digital-fulcrum.com/measure-ad-load-time/</link>
		<comments>http://digital-fulcrum.com/measure-ad-load-time/#comments</comments>
		<pubDate>Fri, 06 May 2011 04:06:59 +0000</pubDate>
		<dc:creator>Will Alexander</dc:creator>
				<category><![CDATA[ScriptLoading]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webperf]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=768</guid>
		<description><![CDATA[We saw that Google Analytics now supported Page Load Time metrics out-of-the-box and started thinking about how we might be able to use GhostWriter&#8217;s insights into third-party content (read: ads) performance to give users of both GhostWriter and Google Analytics &#8230; <a href="http://digital-fulcrum.com/measure-ad-load-time/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We saw that Google Analytics now <a href="http://analytics.blogspot.com/2011/05/measure-page-load-time-with-site-speed.html">supported Page Load Time metric</a>s out-of-the-box and started thinking about how we might be able to use GhostWriter&#8217;s insights into third-party content (read: ads) performance to give users of both GhostWriter and Google Analytics highly granular performance measurements.<br />
GhostWriter&#8217;s hooks allow you to execute custom call back functions at the beginning and end of each ad call.    The hook records the timing of each of these events and submits custom events to Google Analytics using its _trackEvent() method.  We&#8217;re using <a target=_new href="http://digital-fulcrum.com/ghostwriter/eg/reporting/">this page</a> to test.</p>
<h4>Ad Load Time Reports</h4>
<p>Check out this eye candy.  All Event values are in milliseconds. </p>
<blockquote><p>Average loads times:<br />
<a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/loadTime-Average-By-Position.png"><img class="size-full wp-image-771" title="loadTime Average By Position" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/loadTime-Average-By-Position.png" alt="" width="783" height="181" /></a></p></blockquote>
<blockquote><p>Distribution of ad load times<br />
<a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/loadTime-Distribution.png"><img class="size-full wp-image-773" title="loadTime Distribution" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/loadTime-Distribution.png" alt="" width="864" height="357" /></a></p></blockquote>
<blockquote><p>Load Time distribution for the 728&#215;90-1 position<br />
<img src="http://digital-fulcrum.com/wp-content/uploads/2011/05/loadTime-Breakdown-728x90-.png" alt="Load Time Distribution " /></p></blockquote>
<h4>Ad Position Starting Times </h4>
<p>You can also see start offset times &#8212; the difference between the start of the page and ad loading.</p>
<blockquote><p>Average start time by position<br />
<a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/startOffset-Average-By-Position.png"><img class="size-full wp-image-774" title="startOffset Average By Position" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/startOffset-Average-By-Position.png" alt="" width="769" height="175" /></a></p></blockquote>
<blockquote><p>Start time distribution for 300&#215;250-1 position<br />
<a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/startOffset-Breakdown-300x250-1.png"><img class="size-full wp-image-775" title="startOffset Breakdown 300x250-1" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/startOffset-Breakdown-300x250-1.png" alt="" width="879" height="346" /></a></p></blockquote>
<h4>No Ghostwriter? No problem &#8230;</h4>
<p>If you&#8217;re willing to put in some extra work, you can collect these metrics even if you&#8217;re not a GhostWriter customer.  You&#8217;ll need to add a new &lt;script&gt; element below each of your ad calls and include   <a href="/webperf/admonitors.js">this script</a>.  on your page.  (This assumes you all ready have GA working to track pageviews)<br />
<blockquote style="margin: 0.1em 2.0em;">
<code style="margin: 0"><br />
&lt;script&gt;<br />
tracker=  new ghostLoadReporter( "300x250-1" )<br />
tracker.start()<br />
// Normal ad loading code here ...<br />
&lt;/script&gt;<br />
&lt;script&gt;<br />
tracker.end()<br />
&lt;/script&gt;<br />
</code><em><strong>WARNING:</strong> It is <strong>NOT</strong> sufficient to simply add the tracker.end() calls after your ad loading code.  It <strong>must</strong> be in a separate script block.</p></blockquote>
<p>This will let you start collecting the start offset and load time metrics for the ads on your page; however, you&#8217;ll be limited to just being able to collect this data.  With GhostWriter, however, you will soon be able to get what I know you&#8217;re <strong>really</strong> after.</p>
<h4>Analyzing The Entire Chain</h4>
<p>Knowing start and end times for the ads on your page is great.  The only problem is, you have no idea <strong>why</strong> some ads are slower.  GhostWriter can fill that knowledge gap, giving you a breakdown of the URLs that contributed to an ad&#8217;s slowest.  With this data, you can actually troubleshoot reports of <em>Your ads are making the site slow</em> using empirical evidence.<br />
<a href="/ghostwriter/eg/bubbles/">Our GhostWriter bubbles page</a> shows a little bit of what we mean.  After loading the ads, little &#8220;bubbles&#8221; appear above each one that tell you the start and end times for the entire ad.  These two metrics are what we&#8217;re reporting into GA today.  Expanding the bubbles, however, shows the entire daisy chain of delivery &#8212; It captures the load times for every SCRIPT, IMG, IFRAME and EMBED element along with the URL.<br />
<a href="http://digital-fulcrum.com/wp-content/uploads/2011/05/300x250-2-daisy-chain.png"><img class="alignleft size-full wp-image-769" title="Ad Loading Daisy Chain" src="http://digital-fulcrum.com/wp-content/uploads/2011/05/300x250-2-daisy-chain.png" alt="" width="637" height="389" /></a></p>
<p>We&#8217;ll be reporting this level of detail shortly and let you identify which domains contribute most to latency.  It&#8217;s a great way to keep an eye on your third-party content providers, many of whom have an SLA guaranteeing a certain quality of service.<br />
<br style="clear: both;" /></p>
<p><strong>We know you&#8217;re excited so we&#8217;ll get back to work!</strong> </p>
<p>If you&#8217;re interested in monitoring third-party content but not letting it impact the performance of your content,  check out how <a href="http://digital-fulcrum.com/solutions/ghostwriter-complete-control/">GhostWriter</a> puts <strong>you</strong> in complete control and check out our <a href="http://digital-fulcrum.com/solutions/ghostwriter-complete-control/ghostwriter-code-sample/">Free Trial</a></p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/measure-ad-load-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Auto Semi-Colon Insertion and Closures</title>
		<link>http://digital-fulcrum.com/auto-semi-colon-insertion-and-closures/</link>
		<comments>http://digital-fulcrum.com/auto-semi-colon-insertion-and-closures/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 15:22:28 +0000</pubDate>
		<dc:creator>Will Alexander</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=639</guid>
		<description><![CDATA[I was working on a Javascript library, applying what I thought was an innocuous change to remove an unnecessary closure. The original code looked like this. Foo= (function(){ return function($){alert($)} })() (function(){ /* ... */ })(); I re-factored to remove &#8230; <a href="http://digital-fulcrum.com/auto-semi-colon-insertion-and-closures/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was working on a Javascript library, applying what I thought was an innocuous change to remove an unnecessary closure. </p>
<p>The original code looked like this.<br />
<code><br />
Foo= (function(){ return function($){alert($)} })()<br />
(function(){  /* ... */   })();<br />
</code></p>
<p>I re-factored to remove the first closure.  Suddenly, the Foo() function was executing before any code actually ran Foo().  What&#8217;s more, the Foo() variable was no longer defined.<br />
<code><br />
Foo= function($){ alert($); }<br />
(function)(){ /* .... This was untouched */ })();<br />
</code><br />
If you run this simple example it becomes clear what had happened: Instead of assigning the function declaration to the Foo variable, the parentheses around the bottom closure was causing the function to run inline, passing the closure as its argument.  </p>
<p>This is one case where automatic semi-colon insertion (ASI) failed me.  Normally when you assign a function to a variable, the ending } triggers ASI; however, in this case, since the next non-whitespace character was a ( ASI was not performed and instead the function was executed.  Adding a semi-colon to the first line fixed the issue. </p>
<p>When I first started writing Javascript something similar happened to me.  At the time I remember un-doing a bunch of changes until I finally got it to work properly; however, it always bothered me that I couldn&#8217;t figure out the root cause.  Now I&#8217;m convinced it was a similar issue.  </p>
<p>I&#8217;m not sure what the exact rules are for ASI and whether or not its implemented the same in all browsers.  Given this is only the second time I&#8217;ve run into it, I assume it&#8217;s rather consistent; however, the lesson I learned is this: <strong>Always</strong> terminate variable assignment with a semi-colon!</p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/auto-semi-colon-insertion-and-closures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gecko and WebKit To Iframes: &#8220;Freeze! Or you&#8217;ll reload!&#8221;</title>
		<link>http://digital-fulcrum.com/iframe-reloading-behavior/</link>
		<comments>http://digital-fulcrum.com/iframe-reloading-behavior/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 20:31:52 +0000</pubDate>
		<dc:creator>Will Alexander</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://digital-fulcrum.com/?p=628</guid>
		<description><![CDATA[iFrames aren&#8217;t evil, just misguided I&#8217;ve always looked at iframes with a great deal of skepticism. They seem like something of an intruder, delivered from their own domain and free to embed whatever content they see fit. Browsers implement a &#8230; <a href="http://digital-fulcrum.com/iframe-reloading-behavior/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<link href=/executionorder/syntaxhilighter/styles/shCore.css rel='stylesheet' type='text/css' />
<link href=/executionorder/syntaxhilighter/styles/shThemeDefault.css rel=stylesheet type=text/css />
<h2>iFrames aren&#8217;t evil, just misguided</h2>
<p>I&#8217;ve always looked at iframes with a great deal of skepticism. They seem like something of an intruder, delivered from their own domain and free to embed whatever content they see fit.  Browsers implement a great deal of cross-domain security to prevent your page from peeking into an iframe and vice versa, but these interlopers always seem to figure out how to work around it, even if it&#8217;s just a simple window.top.location.href=&#8221;&#8230;&#8221;;   Beyond the security issue, they seem to exhibit some quirky behavior in Firefox especially, which sometimes decides to switch iframe content.  I&#8217;ve seen iframes that were meant to contain ads contain raw JSON data show up in Firefox.  It didn&#8217;t come as any surprise to me then when I discovered another quirky behavior.  In both Gecko and WebKit, <strong>whenever you move an iframe, it will reload!</strong></p>
<p>Have a look at this page, which uses a Dart tag to embed an ad that contains an <a href="http://www.adkeeper.com">AdKeeper button</a>.  Open the Net tab in Firebug before you click the button to move the iframe.  You can see that appending the iframe to another element triggers the entire frame to be reloaded!</p>
<p><a href="/moveiframes">http://digital-fulcrum.com/movieiframes</a> </p>
<h2>When might iframes be moved?</h2>
<p>To mitigate the impact of slow-loading third-party ads (no first-party content is ever slow, right?) a lot of sites are using a technique where the ads are placed at the bottom of the page.  To accomplish this, two DIV elements are used along with two SCRIPT tags.  The first DIV is where the ad would normally load and where it will eventually be placed. The second DIV is the container into which the ad actually is loaded.  The first script tag loads the ad and the second script tag moves it.  Here&#8217;s a simple example.  </p>
<pre class="brush: xml">
&lt;body&gt;
&lt;!-- This is where the ad will eventually be placed --&gt;
&lt;div id=ad1-placement&gt;&lt;/div&gt;
&lt;div class=content&gt;
Loads and loads of Content
&lt;/div&gt; 

&lt;!--
Here we load the ad.  The DIV element must be part of the HTML
and cannot be included dynamically.  THis is to guarantee the HTML
that gets output via document.write() is contained entirely in the DIV.
--&gt;
&lt;div id=ad1-load&gt;
&lt;script&gt;
document.write(&quot;&lt;script src=adserver.com/....&gt;&lt;\/script&gt;&quot;);
&lt;/script&gt;
&lt;/div&gt;
&lt;!--
This could be iterative, but it must be done
AFTER the script tag that loads the ad.
--&gt;
&lt;script&gt;
var from= document.getElementById(&quot;ad1-load&quot;),
    to= document.getElementById(&quot;ad1-placement&quot;)
;
to.appendChild(from);
&lt;/script&gt;
&lt;body&gt;
</pre>
<h2>Okay, but so what?</h2>
<p>Not only does this technique require considerable effort to implement, if the ad that gets written contains a third-party iframe tag, there&#8217;s a good possibility that impression will be counted <strong>twice</strong> on the third-party server.  This is going to cause some significant reporting discrepencies and click-thru percentage is going to be inaccurate.</p>
<p>If you&#8217;re looking to prevent ads from slowing down your page, are concerned about the compatibility and performance issues inherent to friendly-iframes I would not recommend this approach.  Instead, take a look at <a href="http://digital-fulcrum.com/solutions/ghostwriter-complete-control/">Ghostwriter</a>, a solution that gives you the best of both worlds.  </p>
<p><script src=/executionorder/sh/scripts/shCore.js></script><br />
<script src=/executionorder/sh/scripts/shBrushXml.js></script><br />
<script> SyntaxHighlighter.all() </script> </p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/iframe-reloading-behavior/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer&#8217;s Native Support for Script Pre-Fetching</title>
		<link>http://digital-fulcrum.com/script-pre-fetching-redeux/</link>
		<comments>http://digital-fulcrum.com/script-pre-fetching-redeux/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 20:08:06 +0000</pubDate>
		<dc:creator>Will Alexander</dc:creator>
				<category><![CDATA[ScriptLoading]]></category>
		<category><![CDATA[webperf]]></category>
		<category><![CDATA[scriptloading]]></category>
		<category><![CDATA[wpo]]></category>

		<guid isPermaLink="false">http:/?p=1</guid>
		<description><![CDATA[Script pre-fetching is a very useful technique allowing you to defer execution of a script or serialize execution of multiple scripts which have dependencies.  Existing implementations rely on various hacks to achieve pre-fetching, all of which require the resource be cache-able.  This post shows how Internet Explorer has native support for this concept and provides code that can be used so hacks are limited to other browsers.   <a href="http://digital-fulcrum.com/script-pre-fetching-redeux/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<link href=/executionorder/syntaxhilighter/styles/shCore.css rel='stylesheet' type='text/css' />
<link href=/executionorder/syntaxhilighter/styles/shThemeDefault.css rel=stylesheet type=text/css />
<p>Script pre-fetching seems to be a hot topic these days.  Steve Souders&#8217; <a href="http://stevesouders.com/controljs">ControlJS</a> and <a href="http://labjs.com">LABjs</a> from Getify both provide this capability and Stoyan Stefanov recently posted a mechanism for <a href="http://www.phpied.com/preload-then-execute/">accomplishing this in FireFox</a>.</p>
<p><strong>What is pre-fetching? </strong></p>
<p>Simply put, pre-fetching scripts is used to accomplish two things which are somewhat related:</p>
<ol>
<li>Download a script <strong>now</strong> so you can execute it at a later point in time.</li>
<li>Download scripts in parallel but control the order in which they execute.</li>
</ol>
<p><strong>Delayed Execution<br />
</strong></p>
<p>For the first case, if you don&#8217;t need to run a script, you shouldn&#8217;t run it.  Scripts take time, no matter how well they&#8217;re written, and if there&#8217;s no reason to run something, don&#8217;t bother.  Stoyan points out an excellent use-case: Auto-completion.  If you&#8217;re using JSONP to provide auto-completion data the script you attached to auto-complete &#8220;Hello&#8221; is no longer useful when the adds &#8220;World&#8221; to the search.</p>
<p>Current versions of  FireFox (&lt;3.5)  enforces strict script execution order. <strong> This makes pre-fetching JSONP scripts an imperative</strong>.  If  you just blindly attached a script with the URL &#8220;/autocomplete?s=hello&#8221; and it takes 10 seconds to load, it doesn&#8217;t matter if &#8220;/autocomplete?hello+world&#8221; only takes 1: The user waits ten seconds.</p>
<p>Steve uses a dynamic menu as his example.   There&#8217;s no reason to run an expensive menu initialization routine unless the user provides some indication they&#8217;re going to interact with it.</p>
<p><strong>Managed Execution</strong></p>
<p>We all know parallel downloading is a Good Thing; however, this is surprisingly difficult to achieve when it comes to loading scripts that have dependencies.  If ScriptB requires ScriptA execute first, and you attach them both at the same time, there&#8217;s no guarantee that, in IE and WebKit, the scripts  will execute in the necessary order.  Firefox, with its FIFO execution requirement, makes this somewhat easier, but comes at a significant expense.</p>
<p><strong>Pre-Fetching Implementations</strong></p>
<p>All of these libraries attempt to work around these limitations using what everyone agrees are simply browser hacks.  Instead of creating the script and attaching it like you would normally do, they pre-fetch the URL by creating either a non-script element such as an IMG or OBJECT, or, in the case of LABjs, a script element with an invalid type.  They assign the real URL to the src attribute of this element and register for the onload event.  Once this event fires, it&#8217;s assumed the script is in the cache and, when execution of this script is desired, they create an additional SCRIPT element and insert it into the DOM.   </p>
<p>The code might look like this:</p>
<pre class="brush: js">
&lt;script&gt; 

/*
This code uses an Image to pre-fetch -- Real implementations
need to use more robust techniques to deal with browser quirks
*/
function preFetchScript(url, callback){
     var img= new Image();
     img.onload= function(){
         callback(url);
     }
     img.src= url;
}
var menuUrl= "menuscript.js";
/* We want to start fetching the script immediately */
preFetchScript(menuUrl, function(){
/* Once the script is in cache,
we register for our menu element's click handler to
actually trigger execution */
  $("menu").onclick= function(){
    executeScript(menuUrl, function(){ initMenu(); });
  }
});
function executeScript(url, callback){
     var script= document.createElement('script');
     script.onload= script.onreadystatechange= function(){
           if(
                    this.readyState &#038;&#038;
                     this.readyState != "complete" &#038;&#038;
                     this.readyState != "loaded"
          )
                  return;
           callback();
     }
     script.url= url;
     document.body.appendChild(script);
}
&lt;/script&gt;
</pre>
<p><b>So &#8230; What&#8217;s the problem? </b><br />
For the most part, these work fine; however, this code makes one significant assumption: That the URL will be cached once it&#8217;s downloaded as an Image.  What happens if the script is uncacheable?  Catastrophe!  Best case scenario is the script is requested again and the user just experiences a delay. If,however, you&#8217;re using pre-fetching to implement dependency management (like LABjs), the execution order can no longer be managed and there&#8217;s potential your menu code will fail miserably. </p>
<blockquote><p>
There are a number of reasons the script might not be cached:  Maybe it&#8217;s got a Cache-Control: no-cache header or it has no cache-control header.  In the latter case, browsers employ a heuristic to determine freshness that relies on the last modified header.  Even if you&#8217;ve set cache-control headers properly, IE is notoriously quirky when it comes to
</p></blockquote>
<p><strong>The Solution <em>(at least for Internet Explorer)</em></strong><br />
In the preFetchScript() function above, we don&#8217;t need to add the Image to the DOM for the browser to begin fetching the URL. In Internet Explorer, the same holds true for a SCRIPT tag: The URL is fetched immediately upon assignment of the src attribute.  </p>
<blockquote><p>
I seem to remember pre-fetching image scripts being all the rage back in the 90&#8242;s when JavaScript first came out (I think they called it DHTML&#8230;I&#8217;m actually kind of new to the JavaScript party and, until about 3 years ago, was a sysadmin and one of those JavaScript haters.  At some point, I plan to write Perl a break-up letter).  So the fact that the URL gets fetched immediately shouldn&#8217;t come as any shock.
</p></blockquote>
<p>It also turns out that, while IE will fetch the URL when the src attribute is set, it won&#8217;t actually execute the script until the element is added to the DOM. This makes sense: It would be shocking to say the least if a pre-fetched image was displayed to the user before appended to the document.  In this way, scripts behave the same.  </p>
<p>It turns out native support for script pre-fetching has been in Internet Explorer and staring us in the face for over a decade: The readyState property and corresponding readystatechange event.  Here&#8217;s a new pre-fetch script which takes advantage of this IE-specific behavior.  This function, when run in IE, will pre-fetch a script but not execute it: </p>
<pre class="brush: js">

function prefetchScriptIE(url, callback){
     var script= document.createElement("script");
     script.onreadystatechange= function(){
           if(this.readyState == "loaded"){
                  callback();
           }
     }
     script.src= url;
     return script;
}
var
      menuUrl= "menuscript.js",
      menuScript= prefetchScriptIE(menuUrl, function(){
            /* Voila!!!  menuscript.js has been loaded.  No matter
                what cache quirks were applied, we will never re-request */
           document.body.appendChild(menuScript, function(){ initMenu(); });
      });
</pre>
<p>It&#8217;s no wonder this hasn&#8217;t been fully explored: IE&#8217;s readystatechange event is unique (only Opera does the same) and it pisses newcomers off that there&#8217;s no onload event like everything else.  Moreover, it&#8217;s not easy to know why the value for the readyState property can seemingly be either &#8220;loaded&#8221; or &#8220;complete&#8221; and still mean the same thing.  </p>
<p>The reason for the former is, in my opinion, a flaw in the other browsers.  The State Pattern is a much more appropriate model for network resources and a singular &#8220;onload&#8221; event that&#8217;s fired once is too limiting.  The reason for the latter is slightly more complicated.  Scripts that are in the cache will immediately transition to the &#8220;loaded&#8221; state.  When a script that&#8217;s in the cache is immediately added to the DOM, IE doesn&#8217;t fire the readystatechange event when it transitions to the complete.  This is confusing, but insures the event doesn&#8217;t fire consecutively.  </p>
<p>Another advantage to this is that the pre-fetched script can be added to the DOM at any time if we detect we want to execute it as soon as it finishes. &#8220;Inferior&#8221; pre-fetching techniques require the pre-fetch finish to guarantee that, if it can be cached, it&#8217;s not re-fetched if we decide to make the script while the pre-fetching is still being done.  </p>
<p>Unfortunately, for the other browsers, there&#8217;s no way to work around this at the moment.  Newer FireFox and WebKit builds allow you to serialize execution via an async=false  property.  While this solves the issue for dependency management (kind of, it introduces a single queue for all synchronized execution some that, as dynamic script use continues to grow, will IMHO, prove to be its downfall), it provides no relief if you&#8217;re using pre-fetching to defer execution.   Here&#8217;s an example of a synchronized execution queue for Internet Explorer:<br />
<a href=/executionorder>http://digital-fulcrum.com/executionorder</a> </p>
<p>In short, I find IE&#8217;s model to be more than sufficient to handle the various use-cases pre-fetching satisfies.  AT a minimum, it should be the de-facto pre-fetching model for Internet Explorer.  Best-case, it&#8217;s adopted by the W3C as an HTML 5 standard and lays to rest all problems with dynamic script management once and for all!<br />
<script src=/executionorder/sh/scripts/shCore.js></script><br />
<script src=/executionorder/sh/scripts/shBrushJScript.js></script><br />
<script> 
SyntaxHighlighter.all()
</script> </p>
<p><!--<br />
function initMenuAndPassClick(event){<br />
     var menu= new Menu("menu");<br />
     menu.clicksimulator(event);<br />
}<br />
var menuClicked= false, menuUrl= "/scripts/menugeneration.js";<br />
$("menu").onclick= function(e){<br />
     menuClicked= e;<br />
     this.onclick= null;<br />
}<br />
preFetchScript(menuUrl, function(){<br />
     if(menuClicked)<br />
          initMenuAndPassClick(menuClicked);<br />
     else<br />
          $("menu").onclick= function(e){<br />
               this.onclick= null;<br />
                executeScript(menuUrl, function(){<br />
                   initMenuAndPassClick(e);<br />
                });<br />
          }); </p>
<p>});<br />
--> </p>
]]></content:encoded>
			<wfw:commentRss>http://digital-fulcrum.com/script-pre-fetching-redeux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

