On 7/3/07, <b class="gmail_sendername">Robert Sayre</b> <<a href="mailto:sayrer@gmail.com">sayrer@gmail.com</a>> wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On 7/2/07, Robert O'Callahan <<a href="mailto:robert@ocallahan.org">robert@ocallahan.org</a>> wrote:<br>> On 7/2/07, Robert Sayre <<a href="mailto:sayrer@gmail.com">sayrer@gmail.com</a>> wrote:<br>><br>
> > Basically, I think offline caches should respect the Vary: HTTP<br>> > header, and maybe more. Applications will need to do this right<br>> > anyway, if they want to function correctly in the presence of ISP HTTP
<br>> > proxies (AOL, TMobile, etc),  corporate firewalls, and server-side<br>> > stuff like Citrix Netscalers.<br>><br>> No they don't. For example, they can just use Cache-Control:private to<br>> bypass those caches. That's what GMail does.
<br><br>Yes, I should have mentioned that I don't think an Offline API will be<br>able to handle Cache-Control:private stuff better than other proxies<br>unless it reinvents other HTTP caching mechanisms.</blockquote>
<div><br>I don't know what you mean. Offline storage is a private cache and can ignore Cache-Control:private.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
> > To me, it looks like the caching mechanisms in HTTP 1.1 can satisfy<br>> > this requirement. I think Rob is correct that it adds substantial<br>> > complexity, but it is already required.<br>><br>
> In what way is it already required? Browsers are not required to store<br>> multiple resources for the same URI. We don't; we just use Vary to help<br>> (in)validate the resource we've got.<br><br>I mean that it is required for web application authors that want to
<br>scale cheaply and have personalized pages. I don't think you agree<br>with me.</blockquote><div><br>The first app I checked (GMail) doesn't use Vary. If people aren't using it, it can hardly be a requirement. Actually I'm skeptical that Vary helps much with scalability, even if it works interoperably across browsers and caches: presumably most content is going to have one global instance (Cache-Control:public), or one instance per user (Cache-Control:private).  "Vary" only helps you cache content that falls in between. Do you know of any examples of such content in existing apps?
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> So how would you use Vary here, anyway? Serve pages with "Vary: Cookie"? I
<br>> guess that could work, but app authors would have to pass no cookies except<br>> for the session cookie. That could be difficult.<br><br>Or you could standardize the cookie value in some way.</blockquote><div>
<br>I thought about just specifying a standard session cookie name which always becomes part of the cache key along with the URI ("HTML5-Session" or something). But that doesn't work well, e.g. if you want some content to be indexed by user and some content to be indexed by language.
<br><br>A simple alternative would be a new server response header, say X-Vary-Cookie: <cookiename>, which essentially means "Vary" for that particular cookie (and offline storage uses it as a cue to cache one resource per cookie value).
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> Using an HTTP response header to specify how a URI can map to multiple<br>
> resources is a good idea, though. It avoids ambiguities and offers a simple<br>> default. If we have to have that feature, this seems like a good way to do<br>> it.<br><br>Etag and Content-Location could be used.
</blockquote><div><br>I think they're unnecessary given the above proposal.<br></div><br></div>Rob<br>-- <br>"Two men owed money to a certain moneylender. One owed him five hundred denarii, and the other fifty. Neither of them had the money to pay him back, so he canceled the debts of both. Now which of them will love him more?" Simon replied, "I suppose the one who had the bigger debt canceled." "You have judged correctly," Jesus said. [Luke 7:41-43]