[Cosmo-dev] Bug 9715

Andre Mueninghoff andre_mueninghoff at fastmail.fm
Tue Oct 16 19:05:35 PDT 2007


A user +1 for the most current data always to be presented as edited by
me and/or all other users sharing the same Chandler suite items.
Andre

On Tue, 16 Oct 2007 17:08:34 -0700, "Travis Vachon"
<travis at osafoundation.org> said:
> Good news everyone!
> 
> After digging through the HTTP caching spec a bit (http://www.w3.org/ 
> Protocols/rfc2616/rfc2616-sec13.html#sec13) I think that Firefox is  
> actually behaving correctly in most of the cases where we're seeing  
> bug 9715. From the spec:
> 
> "The goal of caching in HTTP/1.1 is to eliminate the need to send  
> requests in many cases, and to eliminate the need to send full  
> responses in many other cases."
> 
> The problem we're having is that Firefox is deciding that it does not  
> need to send a request to get calendar and dashboard data in many cases.
> 
> More spec:
> 
> 
> 
> 13.1.1 Cache Correctness
> 
> A correct cache MUST respond to a request with the most up-to-date  
> response held by the cache that is appropriate to the request (see  
> sections 13.2.5, 13.2.6, and 13.12) which meets one of the following  
> conditions:
> 
> ...
> 
>        2. It is "fresh enough" (see section 13.2). In the default case,
>           this means it meets the least restrictive freshness  
> requirement
>           of the client, origin server, and cache (see section 14.9); if
>           the origin server so specifies, it is the freshness  
> requirement
>           of the origin server alone.
> ...
> 
> 
> 13.2 Expiration Model
> 13.2.1 Server-Specified Expiration
> 
> HTTP caching works best when caches can entirely avoid making  
> requests to the origin server.
> 
> ...
> 
> 13.2.2 Heuristic Expiration
> 
> Since origin servers do not always provide explicit expiration times,  
> HTTP caches typically assign heuristic expiration times, employing  
> algorithms that use other header values (such as the Last-Modified  
> time) to estimate a plausible expiration time. The HTTP/1.1  
> specification does not provide specific algorithms, but does impose  
> worst-case constraints on their results.
> 
> 
> 
> 
> So our problem is - you guessed it! - that we're not specifying an  
> expiration date for our Atom data. As a result, Firefox uses several  
> other headers to take a guess at when the data is no longer fresh.  
> Given the nature of our application I'd like to propose that we want  
> data to expire immediately, forcing the client to revalidate with the  
> server any time it wants to get data. This doesn't mean we're  
> throwing away caching completely, it just means the server must  
> return a 304 to use cached data.
> 
> Since this is a little confusing I'll give a couple examples based on  
> some testing from this morning:
> 
> 1) I have a collection with uid abcd containing two events "foo" and  
> "bar". I first fetch the collection:
> 
> GET /atom/collection/abcd/full/eim-json
> 
> Now I delete event "foo":
> 
> DELETE /atom/item/foo-uid
> 
> Now I look at the data in another view and then switch back to the  
> original view:
> 
> GET /atom/collection/abcd/full/eim-json
> 
> Since we didn't specify an expiration date for the collection data  
> the browser uses its heuristic to decide that the data in its cache  
> is fresh and doesn't even bother going back to the server for it.  
> Since foo was in the original request, foo will be in this request as  
> well.
> 
> 
> 
> 2) I have a collection with uid efgh containing one event "bar". I  
> first fetch the collection:
> 
> GET /atom/collection/efgh/full/eim-json
> 
> Now I add a new event "foo":
> 
> POST /atom/collection/efgh/full/eim-json
> 
> <data for "foo">
> 
> 
> Finally I refetch the data for efgh:
> 
> GET /atom/collection/efgh/full/eim-json
> 
> This time according the HTTP spec the collection data should be  
> invalidated. However, because of the issue mentioned in bug  9715  
> comment 7 it is not. Fortunately, some testing has indicated that the  
> caching settings I'm proposing also make this a non-issue, as Firefox  
> appears to respect the appropriate part of the spec in this regard.
> 
> Given the priority of this bug I'm going to start working on a  
> solution in this vein but I'll be sure to call out my commit to the  
> appropriate parties for review.
> 
> Comments and questions welcome!
> 
> -Travis
> 
> _______________________________________________
> cosmo-dev mailing list
> cosmo-dev at lists.osafoundation.org
> http://lists.osafoundation.org/mailman/listinfo/cosmo-dev


More information about the cosmo-dev mailing list