<br>> That's an even better reason why this isn't a good idea.  You'd never
be able to<br>> effectively insert a cache if you had special semantics tied
to if-modified-since.<br><br>OK, thanks Bob & Bill for the clarification, it now fairly clear that the delta encoding route is not the way to go.<br><br>> Are you interested in always getting the latest view of the VM
collection?  <br>> Or are you interested in each change event that happened
to the collection?<br><br>Yes and yes ;)<br><br>The idea was to get an initial collection of VMs satisfying certain criteria, but then to also retrieve updates as the status of the VM collection changes, without necessarily re-evaluating the entire query.<br>
<br>So I'm thinking now of a simpler alternative approach that uses neither If-Modified-Since nor Atom (as the conduit to push out updates). I'll flesh these ideas out on Monday and do some prototyping.<br><br>Cheers,<br>
Eoghan<br><br><br><div class="gmail_quote">On 17 April 2010 16:01, Bill Burke <span dir="ltr"><<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
<br>
Eoghan Glynn wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Yeah, I take your point Bill, I may have been over-gilding the lily ...<br>
<br>
 > I think what you are suggesting (if I'm understanding right) of using If-Modified-Since<br>
 > semantics as a query-like mechanism is overloading the *actual* meaning of this header.<br>
 > This header is meant for conditional reads or updates to save bandwidth (read)<br>
<br>
Yes, there would be a subtle change to the semantics of If-Modified-Since, in the sense of escaping the "all or nothing" straight-jacket.<br>
<br>
So the idea is to avoid a conditional GET being returned either /nothing/ (304 "Not Modified") if not a single entry in the feed has changed, or /everything/ (the entire Feed) even if only a relatively small subset of the entries have been updated.<br>

<br>
You're absolutely correct that this does go against the letter of the spec, which requires that a non-empty return would be exactly the same as for a normal GET.<br>
<br>
Though I'd argue that the delta semantics are still kinda within the "spirit of the spec" ;)<br>
<br>
 > In the REST-* messaging work I did, a "next" link header is provided with each event<br>
 > posted to the feed (or topic as is referenced in the spec).  This "next" link points to the<br>
 > next *sequenced* event and acts as an index pointing to a specific place in time.<br>
<br>
This is interesting, maybe we can structure the provision of updates to the VM collection in a similar way. There was a suggestion previously of taking a paginated approach, but I didn't really like the idea that the state of VMs reported in earlier "pages" could have changed by the time the later "pages" are retrieved. But perhaps explicitly treating the "next" link as a pointer to /future/ updates would avoid that sort of messiness.<br>

<br>
</blockquote>
<br></div>
I'm not sure what the end goal is here.  Are you interested in always getting the latest view of the VM collection?  Or are you interested in each change event that happened to the collection?  If its the former, then a conditional GET using if-modified-since or if-not-match is the best approach even if there are query parameters (I'm pretty sure caches are ok with query parameters).  If its the latter, a link approach is better IMO.<div>
<div></div><div class="h5"><br>
<br>
-- <br>
Bill Burke<br>
JBoss, a division of Red Hat<br>
<a href="http://bill.burkecentral.com" target="_blank">http://bill.burkecentral.com</a><br>
</div></div></blockquote></div><br>