<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Diffable: only download the deltas</title>
	<atom:link href="http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/</link>
	<description>Essential knowledge for making your web pages faster.</description>
	<lastBuildDate>Sat, 04 Feb 2012 09:46:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Joshua Harrison</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2203</link>
		<dc:creator>Joshua Harrison</dc:creator>
		<pubDate>Wed, 14 Jul 2010 17:50:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2203</guid>
		<description>So I have seen several complaints about the scale on the Y-axis of the performance graph which Steve included from my slides.  These concerns are completely valid, and the graph has been modified:

http://googlediffable.blogspot.com/

Thanks for the feedback and sorry for the graph and the delay in fixing it!</description>
		<content:encoded><![CDATA[<p>So I have seen several complaints about the scale on the Y-axis of the performance graph which Steve included from my slides.  These concerns are completely valid, and the graph has been modified:</p>
<p><a href="http://googlediffable.blogspot.com/" rel="nofollow">http://googlediffable.blogspot.com/</a></p>
<p>Thanks for the feedback and sorry for the graph and the delay in fixing it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sergey Chernyshev</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2173</link>
		<dc:creator>Sergey Chernyshev</dc:creator>
		<pubDate>Mon, 12 Jul 2010 22:20:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2173</guid>
		<description>Great to see this actually done! I had this idea for a while now and never had a chance to implement it ;)

I think this can be bundled with some SVN/git code to make it easier for people to implement. It can also help with predicting proper expiration window based on historical data for example.</description>
		<content:encoded><![CDATA[<p>Great to see this actually done! I had this idea for a while now and never had a chance to implement it ;)</p>
<p>I think this can be bundled with some SVN/git code to make it easier for people to implement. It can also help with predicting proper expiration window based on historical data for example.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joshua Harrison</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2171</link>
		<dc:creator>Joshua Harrison</dc:creator>
		<pubDate>Sun, 11 Jul 2010 02:23:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2171</guid>
		<description>Andrew,

We have come up with two wails to deal with the issue you raise.  The first, easier way is to change the URL, and this is what we currently do.  When the deltas become so large as to offset the benefit of patching, we simply start over by changing the script URL.  The second way, which we haven&#039;t actually gotten a chance to play with yet, is to set a valid expires time on the base scripts.  If the expires time is, say, 2 weeks, then you would hypothetically only ever need to keep around 2 weeks worth of deltas.</description>
		<content:encoded><![CDATA[<p>Andrew,</p>
<p>We have come up with two wails to deal with the issue you raise.  The first, easier way is to change the URL, and this is what we currently do.  When the deltas become so large as to offset the benefit of patching, we simply start over by changing the script URL.  The second way, which we haven&#8217;t actually gotten a chance to play with yet, is to set a valid expires time on the base scripts.  If the expires time is, say, 2 weeks, then you would hypothetically only ever need to keep around 2 weeks worth of deltas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew N Marshall</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2170</link>
		<dc:creator>Andrew N Marshall</dc:creator>
		<pubDate>Sat, 10 Jul 2010 16:32:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2170</guid>
		<description>Interesting idea, but...

Returning to Kroc&#039;s point, the &quot;expires never&quot; on the specific versions will lead a commonly used site to always base on the first whole version downloaded.

Extending the example, when version 3 is pushed to the server, the client will find v1 in cache and request v1-&gt;v3.  When version 10 comes out, until the cache entry for v1 is expunged, the client will again request relative to v1, that being v1-&gt;v10.

Of course, writable local storage will fix this.

Reminds me of Marimba&#039;s Castanet way way back in the day.

(Spam blocker: &quot;3 times tin =&quot;? )</description>
		<content:encoded><![CDATA[<p>Interesting idea, but&#8230;</p>
<p>Returning to Kroc&#8217;s point, the &#8220;expires never&#8221; on the specific versions will lead a commonly used site to always base on the first whole version downloaded.</p>
<p>Extending the example, when version 3 is pushed to the server, the client will find v1 in cache and request v1-&gt;v3.  When version 10 comes out, until the cache entry for v1 is expunged, the client will again request relative to v1, that being v1-&gt;v10.</p>
<p>Of course, writable local storage will fix this.</p>
<p>Reminds me of Marimba&#8217;s Castanet way way back in the day.</p>
<p>(Spam blocker: &#8220;3 times tin =&#8221;? )</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Hogan</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2165</link>
		<dc:creator>Sean Hogan</dc:creator>
		<pubDate>Sat, 10 Jul 2010 01:40:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2165</guid>
		<description>@Joshua,

Thanks for the response.</description>
		<content:encoded><![CDATA[<p>@Joshua,</p>
<p>Thanks for the response.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joshua Harrison</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2164</link>
		<dc:creator>Joshua Harrison</dc:creator>
		<pubDate>Sat, 10 Jul 2010 00:42:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2164</guid>
		<description>Sean,

The main problem with this approach occurs when there are dependencies between your client and server.  If this is the case, then everyone must get the latest version of the client when the new version of the server is pushed. Otherwise, having two possible client versions in the wild would mean you would need to run both versions of the server, and direct between the two.  If this issue is not a concern, then you could definitely take the approach you describe, and in fact this is the approach HTML5 AppCache uses.</description>
		<content:encoded><![CDATA[<p>Sean,</p>
<p>The main problem with this approach occurs when there are dependencies between your client and server.  If this is the case, then everyone must get the latest version of the client when the new version of the server is pushed. Otherwise, having two possible client versions in the wild would mean you would need to run both versions of the server, and direct between the two.  If this issue is not a concern, then you could definitely take the approach you describe, and in fact this is the approach HTML5 AppCache uses.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Hogan</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2163</link>
		<dc:creator>Sean Hogan</dc:creator>
		<pubDate>Fri, 09 Jul 2010 23:11:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2163</guid>
		<description>Wouldn&#039;t it be better to use whatever is in the cache and load (but don&#039;t use in the current session) the freshest version in the background?  Then the freshest version is available in the next session.</description>
		<content:encoded><![CDATA[<p>Wouldn&#8217;t it be better to use whatever is in the cache and load (but don&#8217;t use in the current session) the freshest version in the background?  Then the freshest version is available in the next session.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joshua Harrison</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2162</link>
		<dc:creator>Joshua Harrison</dc:creator>
		<pubDate>Fri, 09 Jul 2010 21:10:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2162</guid>
		<description>Matt,

I think you are absolutely right, and hopefully all of these ideas can be incorporated into the project.  I am currently working on bootstraps for CSS and HTML content.  I am also working on making the bootstrap code aware of other resources in the current page, allowing multiple resources in a page to be patched with a single diff request.  Lastly, getting a working apache module is a top priority.  I would love to be able to stick an apache server in front of the content server and have it do all the modifications automatically.

Thanks a lot for your interest! All contributions would be greatly appreciated. :)</description>
		<content:encoded><![CDATA[<p>Matt,</p>
<p>I think you are absolutely right, and hopefully all of these ideas can be incorporated into the project.  I am currently working on bootstraps for CSS and HTML content.  I am also working on making the bootstrap code aware of other resources in the current page, allowing multiple resources in a page to be patched with a single diff request.  Lastly, getting a working apache module is a top priority.  I would love to be able to stick an apache server in front of the content server and have it do all the modifications automatically.</p>
<p>Thanks a lot for your interest! All contributions would be greatly appreciated. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Mastracci</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2161</link>
		<dc:creator>Matt Mastracci</dc:creator>
		<pubDate>Fri, 09 Jul 2010 20:54:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2161</guid>
		<description>Joshua,

Thanks again for presenting this interesting idea. I think it might be possible to manage this in the context of static-only CDN (I&#039;m thinking Amazon Cloudfront or AppEngine&#039;s built-in CDN) via offline pre-computation of diffs and careful management of page expiry.</description>
		<content:encoded><![CDATA[<p>Joshua,</p>
<p>Thanks again for presenting this interesting idea. I think it might be possible to manage this in the context of static-only CDN (I&#8217;m thinking Amazon Cloudfront or AppEngine&#8217;s built-in CDN) via offline pre-computation of diffs and careful management of page expiry.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joshua Harrison</title>
		<link>http://www.stevesouders.com/blog/2010/07/09/diffable-only-download-the-deltas/#comment-2160</link>
		<dc:creator>Joshua Harrison</dc:creator>
		<pubDate>Fri, 09 Jul 2010 20:37:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.stevesouders.com/blog/?p=1378#comment-2160</guid>
		<description>Matt,
You are correct in the second part of your comment. Diffable resources are turned into strings and embedded within some bootstrap code to produce the actual script, which we shall call &#039;final.js&#039; for this explanation.  The &#039;final.js&#039; script contains the original content (as a string), the version of the original content, and some code that checks the version against a version in the container page, requesting a diff and patching when needed.  If the version of the resource contained in the HTML page does not match the version contained inside &#039;final.js,&#039; then &#039;final.js&#039; knows it is being served from cache.</description>
		<content:encoded><![CDATA[<p>Matt,<br />
You are correct in the second part of your comment. Diffable resources are turned into strings and embedded within some bootstrap code to produce the actual script, which we shall call &#8216;final.js&#8217; for this explanation.  The &#8216;final.js&#8217; script contains the original content (as a string), the version of the original content, and some code that checks the version against a version in the container page, requesting a diff and patching when needed.  If the version of the resource contained in the HTML page does not match the version contained inside &#8216;final.js,&#8217; then &#8216;final.js&#8217; knows it is being served from cache.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

