<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<div>Last comment on this, and then I'll leave it to you all to discuss as you see fit:</div>
<div><br>
</div>
<div>In investigating Varnish more today, I was very surprised to learn that it does not respect section 13.10 of the HTTP/1.1 RFC (<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13">http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13</a>),
 which states "Some HTTP methods MUST cause a cache to invalidate an entity. These methods are: PUT, DELETE, POST." </div>
<div><br>
</div>
<div>I found this thread (<a href="http://www.gossamer-threads.com/lists/varnish/misc/19516">http://www.gossamer-threads.com/lists/varnish/misc/19516</a>), where Per Buer comments: "We won't do this because it would totally break if you have more then one Varnish servers.
 It's the backend job to notify the caches when the content actually changes."</div>
<div><br>
</div>
<div>I disagree. According to the spec, this is the job of the cache. The spec doesn't address a clustered cache, but I would expect a clustered cache to perform clustered invalidation. HTCP CLR is designed for this purpose. Therefore, to me it makes total
 sense to incorporate this into Varnish proper. </div>
<div><br>
</div>
<div>Thanks again for your time and attention! </div>
<div><br>
</div>
<div>-Benjamin</div>
<div><br>
<div>
<div>On Jul 6, 2011, at 11:37 AM,  wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<div>Good question!</div>
<div><br>
</div>
<div>In my opinion, invalidating cache entries is an essential operation of a cache. Varnish already supports HTTP PURGE without a separate process, so invalidating entries is supported in Varnish directly.  What is not supported directly is invalidating entries
 across a cluster. This requires listening on a separate port, but that doesn't seem like a very strong reason for breaking the functionality into a separate program.</div>
<div><br>
</div>
<div>It also seems as though keeping the code for HTCP alongside the rest of Varnish will promote maintainability. </div>
<div><br>
</div>
<div>Adding this to Varnish proper should lead to a good start for supporting the other operations in HTCP, specifically the ability for a server to query its peers to determine whether they have a cached representation available.</div>
<div><br>
</div>
<div>Furthermore, Squid supports HTCP out of the box, so feature parity in this area will make it easier to gain market share.</div>
<div><br>
</div>
<div>Thoughts?</div>
<div><br>
</div>
<div>-Benjamin</div>
<br>
<div>
<div>On Jul 6, 2011, at 10:44 AM, Per Buer wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">Hi,
<div><br>
</div>
<div>Why should this be in Varnish directly? Whats wrong with having it in a separate program?</div>
<div><br>
</div>
<div>Per.<br>
<br>
<div class="gmail_quote">On Wed, Jul 6, 2011 at 4:38 PM, Ben Truitt <span dir="ltr">
<<a href="mailto:btruitt@rackspace.com">btruitt@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I was able to find the location of the source code for the HTCP plugin I referred to in the below email (thanks, Artur Bergman):<br>
<br>
<a href="https://svn.wikia-code.com/utils/varnishhtcpd/" target="_blank">https://svn.wikia-code.com/utils/varnishhtcpd/</a><br>
<br>
I'm still curious to know whether there are any plans to incorporate this or similar functionality for purging a clustered cache into Varnish going forward.<br>
<br>
Thanks,<br>
Benjamin<br>
<div>
<div></div>
<div class="h5"><br>
On Jul 5, 2011, at 4:56 PM,  wrote:<br>
<br>
> Hi -<br>
> Thanks for the great work on Varnish!<br>
><br>
> My team at Rackspace is considering adopting Varnish for some RESTful services we're creating. We're planning to have a cluster of reverse proxy cache servers in front of our origin servers. One of the issues that is important to us is the ability to keep
 the cache consistent with the origin server's data store as much as possible.<br>
><br>
> I realize that Varnish supports HTTP PURGE operation, but we'd prefer to use something like HTCP's CLR operation for a multicast purge.  I came across a fairly old varnish-dev mailing list item related to this:<br>
><br>
> <a href="http://www.mail-archive.com/varnish-dev@projects.linpro.no/msg00315.html" target="_blank">
http://www.mail-archive.com/varnish-dev@projects.linpro.no/msg00315.html</a><br>
><br>
> That post indicates that HTCP CLR would be incorporated into Varnish, but I don't see that it has been.<br>
><br>
> I'd love to know:<br>
> 1) Are there plans to include HTCP CLR in Varnish any time soon?<br>
> 2) Is there a plugin (such as the one Artur Bergman created) available that I can use today?<br>
><br>
> Thanks in advance for your time!<br>
><br>
> Best,<br>
> Benjamin Truitt<br>
<br>
This email may include confidential information. If you received it in error, please delete it.<br>
<br>
<br>
_______________________________________________<br>
varnish-misc mailing list<br>
<a href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a><br>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
<img src="http://www.varnish-software.com/sites/default/files/varnishsoft_white_190x47.png">
<div>Per Buer, CEO<br>
Phone: +47 21 98 92 61 / Mobile: +47 958 39 117 / Skype: per.buer<br>
<i>Varnish makes websites fly!</i>
<div><a href="http://www.varnish-software.com/whitepapers" target="_blank">Whitepapers</a> |
<a href="http://www.youtube.com/watch?v=x7t2Sp174eI" target="_blank">Video</a> | <a href="https://twitter.com/varnishsoftware" target="_blank">
Twitter</a> <br>
<br>
</div>
</div>
<br>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
<br>
</div>
<font face="monospace">This email may include confidential information. If you received it in error, please delete it.</font></body>
</html>