Kevin sent a bunch of good comments about shindig r678354, I'm
responding to them in individual notes because they touch on several
different areas.

Comment: this change broke negative caching.

The old code ignored cache-control headers on non-200 responses.  I
discovered this because it was causing problems for some OAuth
protocol flows, and attempted to fiox it.  It sounds like the behavior
was as designed.

This is an interesting challenge, because OAuth enabled servers return
401 responses with no-cache headers, and they expect the no-cache
header to be respected.  For example, a client may request an OAuth
enabled resource, and the server will return a 401 indicating that the
authorization for the resource is no longer valid.  The client is
supposed to get the user's permission, and then try again.  If the 401
response is cached, this will fail.

There are a few possibilities to fix this.

- disable negative caching just for the OAuthFetcher
  Kind of ugly, but would certainly work.  The OAuthFetcher code
didn't use to cache at all, but I really want the performance
improvements caching offers.  Adding special cases would be a
reasonable compromise.

- disable negative caching for 401 and 403 responses
  Less ugly than the previous solution, and probably reasonably accurate.

- respect cache-control headers always
  Might cause the performance problems that negative caching is supposed to fix.

Any comments on which solution is preferable?

Cheers,
Brian

Reply via email to