See inline.

Monday, April 14, 2014, 10:02:22 AM, you wrote:

> That looks really good, there are lots of complicated issues to get this 
> stuff right.

Yes, but Leif will be helping so it's all good.

> Which header differences between one range fetch and the next invalidate all 
> of the old fragments, when should they just update the response headers.

Yes. I have a newer version of the design document which mentions that (I'll 
try to update today). A key point is variation in the expiration data.

> What is the right range/partial object chunk size. (Should be configurable 
> per-request.)

Well, per request is difficult. You would have to set it on the very first 
request for the object but it would need to remain fixed for all subsequent 
requests per object.

> How do you handle a range request failure so client is ok with response.

There was some debate about that. How long should ATS wait if part of the 
client response is already cached? I think at least until the server responds 
at all. If that fails, then invalidate the object and send the fail to the 
client. After that, the only real failure is for the server to disconnect and I 
think we might as well do the same to the client, as that is what would happen 
absent ATS.

> How do you deal with a range request of indeterminate size.

That's not so bad - I thought I mentioned that in the design. Since we rewrite 
the first fragment on every request that adds to the cache, we can bump up the 
fragment table at that point. It's only tricky if we can't determine if the 
last touched fragment is really the last fragment in the entire document.

OTOH you may mean "how do we round up a request if we don't know if the rounded 
up size is too long?". I'll need to experiment with that.

> One question:
> Under this scheme can part of an object get purged?

Not currently. We can do that internally if we want to (i.e. replace existing 
data with fresh data from the origin server). I suppose we could handle a range 
purge, although it would need to be resized as with a GET. Would that be useful?


Reply via email to