<?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: Cache Invalidation</title>
	<atom:link href="http://www.subbu.org/blog/2010/01/cache-invalidation/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org/blog/2010/01/cache-invalidation</link>
	<description>HTTP, REST and some Cycling</description>
	<lastBuildDate>Wed, 21 Jul 2010 08:57:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Scott Banwart&#39;s Blog</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-72307</link>
		<dc:creator>Scott Banwart&#39;s Blog</dc:creator>
		<pubDate>Fri, 28 May 2010 15:13:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-72307</guid>
		<description>&lt;strong&gt;Distributed Weekly 34...&lt;/strong&gt;

BizTalk/AppFabric/WCF Updating existing schema without redeploying the dll Considerations When Retrying Failed Messages in BizTalk or the ESB Toolkit Why Is This Still a Routing Failure in BizTalk Server 2009? Using static ports with ESB Handy XML Tool...</description>
		<content:encoded><![CDATA[<p><strong>Distributed Weekly 34&#8230;</strong></p>
<p>BizTalk/AppFabric/WCF Updating existing schema without redeploying the dll Considerations When Retrying Failed Messages in BizTalk or the ESB Toolkit Why Is This Still a Routing Failure in BizTalk Server 2009? Using static ports with ESB Handy XML Tool&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike K</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-51249</link>
		<dc:creator>Mike K</dc:creator>
		<pubDate>Mon, 25 Jan 2010 12:34:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-51249</guid>
		<description>I agree that there are challenges to implementation, but there are a couple of things that bother me about the sentiment that &#039;it doesn&#039;t scale&#039;:

- &#039;Peering&#039; of caches is really a separate issue to the cache invalidation mechanism itself, at least from an HTTP perspective.

- To say a problem is challenging doesn&#039;t necessarily mean that it is infeasible and/or will not scale. I am interested to know if it has been proved that this is the case.</description>
		<content:encoded><![CDATA[<p>I agree that there are challenges to implementation, but there are a couple of things that bother me about the sentiment that &#8216;it doesn&#8217;t scale&#8217;:</p>
<p>- &#8216;Peering&#8217; of caches is really a separate issue to the cache invalidation mechanism itself, at least from an HTTP perspective.</p>
<p>- To say a problem is challenging doesn&#8217;t necessarily mean that it is infeasible and/or will not scale. I am interested to know if it has been proved that this is the case.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-51217</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Mon, 25 Jan 2010 05:38:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-51217</guid>
		<description>Not sure what Justin had in mind when he made that comment, but consider, for instance, maintaining the list of keys that are stale and the respective caches that those keys may be stored in.</description>
		<content:encoded><![CDATA[<p>Not sure what Justin had in mind when he made that comment, but consider, for instance, maintaining the list of keys that are stale and the respective caches that those keys may be stored in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike K</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-51119</link>
		<dc:creator>Mike K</dc:creator>
		<pubDate>Sat, 23 Jan 2010 10:59:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-51119</guid>
		<description>&quot;invalidation really does not scale.&quot;

Hi Justin - Please could you explain the reasoning here?</description>
		<content:encoded><![CDATA[<p>&#8220;invalidation really does not scale.&#8221;</p>
<p>Hi Justin &#8211; Please could you explain the reasoning here?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Nottingham</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-50945</link>
		<dc:creator>Mark Nottingham</dc:creator>
		<pubDate>Wed, 20 Jan 2010 22:31:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-50945</guid>
		<description>Justin - spot on.

Cache channels is often described as invalidation, but it&#039;s really just a (potentially) perpetual extension of freshness -- roughly, &quot;if you&#039;re still in touch with me, and I haven&#039;t said that it&#039;s stale, you can consider it fresh a bit longer.&quot; That makes it compatible with the existing HTTP caching model, unlike invalidation, as you point out.</description>
		<content:encoded><![CDATA[<p>Justin &#8211; spot on.</p>
<p>Cache channels is often described as invalidation, but it&#8217;s really just a (potentially) perpetual extension of freshness &#8212; roughly, &#8220;if you&#8217;re still in touch with me, and I haven&#8217;t said that it&#8217;s stale, you can consider it fresh a bit longer.&#8221; That makes it compatible with the existing HTTP caching model, unlike invalidation, as you point out.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Justin Cormack</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-50835</link>
		<dc:creator>Justin Cormack</dc:creator>
		<pubDate>Tue, 19 Jan 2010 15:00:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-50835</guid>
		<description>Oh dear oh dear.

Cache invalidation is thinking of things the wrong way round. The HTTP cache header says &quot;this may become this stale and the sky will not fall in&quot;. If the sky will fall in, don&#039;t add that header, and use etags and serve up 304s *quickly*.

Think of the cache expiry as a contract, you cannot revoke it once it has been signed. And invalidation really does not scale.

Oh, and if you do want to invalidate, just PURGE the URLs you want to purge as mentioned by Mark, rather than a POST to somewhere random like this API which is then going to have to find the right stuff on the proxies to purge.</description>
		<content:encoded><![CDATA[<p>Oh dear oh dear.</p>
<p>Cache invalidation is thinking of things the wrong way round. The HTTP cache header says &#8220;this may become this stale and the sky will not fall in&#8221;. If the sky will fall in, don&#8217;t add that header, and use etags and serve up 304s *quickly*.</p>
<p>Think of the cache expiry as a contract, you cannot revoke it once it has been signed. And invalidation really does not scale.</p>
<p>Oh, and if you do want to invalidate, just PURGE the URLs you want to purge as mentioned by Mark, rather than a POST to somewhere random like this API which is then going to have to find the right stuff on the proxies to purge.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-50829</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Tue, 19 Jan 2010 13:47:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-50829</guid>
		<description>The spec also ignores the case of forward and reverse proxy caches not in the control of the OpenSocial containers, and sets  false expectation to callers. I opened a thread over the weekend explaining why this API is not workable in practice.</description>
		<content:encoded><![CDATA[<p>The spec also ignores the case of forward and reverse proxy caches not in the control of the OpenSocial containers, and sets  false expectation to callers. I opened a thread over the weekend explaining why this API is not workable in practice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Nottingham</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-50821</link>
		<dc:creator>Mark Nottingham</dc:creator>
		<pubDate>Tue, 19 Jan 2010 12:02:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-50821</guid>
		<description>Mike reminds me of the other (and very obvious) way to to do this; using HTTP PURGE. 

Memories of writing Perl to do this from a database to 100+ caches around the world when I worked at Merrill Lynch back in the 90&#039;s... when there was a Merrill Lynch :)</description>
		<content:encoded><![CDATA[<p>Mike reminds me of the other (and very obvious) way to to do this; using HTTP PURGE. </p>
<p>Memories of writing Perl to do this from a database to 100+ caches around the world when I worked at Merrill Lynch back in the 90&#8217;s&#8230; when there was a Merrill Lynch :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Amundsen</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-50815</link>
		<dc:creator>Mike Amundsen</dc:creator>
		<pubDate>Tue, 19 Jan 2010 10:34:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-50815</guid>
		<description>I implemented a similar pattern within my exyus framework a while back [1] allowing from both an immediate cache invalidation and a background cache invalidation option for clearing up local caches. 

It worked well for maintaining local caches and was handy when I knew of remote target caches (reverse proxy caches).  However, I never implemented a subscription model ala cache channels to make it possible for unknown third-party caches to receive the same information.

[1] http://exyus.googlecode.com/svn/trunk/Exyus.Samples/TaskList.cs</description>
		<content:encoded><![CDATA[<p>I implemented a similar pattern within my exyus framework a while back [1] allowing from both an immediate cache invalidation and a background cache invalidation option for clearing up local caches. </p>
<p>It worked well for maintaining local caches and was handy when I knew of remote target caches (reverse proxy caches).  However, I never implemented a subscription model ala cache channels to make it possible for unknown third-party caches to receive the same information.</p>
<p>[1] <a href="http://exyus.googlecode.com/svn/trunk/Exyus.Samples/TaskList.cs" rel="nofollow">http://exyus.googlecode.com/svn/trunk/Exyus.Samples/TaskList.cs</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Nottingham</title>
		<link>http://www.subbu.org/blog/2010/01/cache-invalidation/comment-page-1#comment-50805</link>
		<dc:creator>Mark Nottingham</dc:creator>
		<pubDate>Tue, 19 Jan 2010 06:13:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=1122#comment-50805</guid>
		<description>Heh. This is about the tenth such proposal I&#039;ve seen; e.g., 
  http://tools.ietf.org/html/draft-danli-wrec-wcip-01
  http://www.w3.org/TR/esi-invp
  
There has been a *lot* of research and proposals in this area. This sort of approach is simple and straightforward, but it requires the server to keep a lot of state, and doesn&#039;t scale very well (at least not to Internet-scale, which is what we shoot for on the Web). 

Generally what you find with invalidation is that you need to trade off immediacy vs. scalability vs. reliability; you can sometimes get two, but not all three.

For example, in this proposal, what happens when the server can&#039;t get an invalidation to the client, due to a network segment, or the client&#039;s IP changing?</description>
		<content:encoded><![CDATA[<p>Heh. This is about the tenth such proposal I&#8217;ve seen; e.g.,<br />
  <a href="http://tools.ietf.org/html/draft-danli-wrec-wcip-01" rel="nofollow">http://tools.ietf.org/html/draft-danli-wrec-wcip-01</a><br />
  <a href="http://www.w3.org/TR/esi-invp" rel="nofollow">http://www.w3.org/TR/esi-invp</a></p>
<p>There has been a *lot* of research and proposals in this area. This sort of approach is simple and straightforward, but it requires the server to keep a lot of state, and doesn&#8217;t scale very well (at least not to Internet-scale, which is what we shoot for on the Web). </p>
<p>Generally what you find with invalidation is that you need to trade off immediacy vs. scalability vs. reliability; you can sometimes get two, but not all three.</p>
<p>For example, in this proposal, what happens when the server can&#8217;t get an invalidation to the client, due to a network segment, or the client&#8217;s IP changing?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
