> On Jun 5, 2015, at 9:45 AM, Sudheer Vinukonda > <sudhe...@yahoo-inc.com.INVALID> wrote: > > Below are my 2c: > > 1. TS-3663 tracks some caching improvements/options that you described. > > 3. I'm not entirely sure to agree with the chaining approach.
Agree that is is a valid approach? Or that there could ever be circumstances where it is desirable? I could agree that it might not be a desirable default. > We have use cases where the redirects can go as deep as 20 times (in fact, FF > and Chrome IIRC allow up to 20 redirects). I believe we set it to 10 in our > prod. Having to create up to 10 TXNs for a single client request seems very > inefficient and could get quite tricky to debug/understand. > Thanks, > Sudheer > > > > On Thursday, June 4, 2015 9:39 AM, James Peach <jpe...@apache.org> wrote: > > > Hi all, > > There's been a lot of discussion on IRC about following redirects in ATS, and > I thought it might be helpful to give my thoughts on the two useful > approaches and establish some terminology. Logically, the HTTP redirects form > a chain of HTTP requests, where each link is given by the Location header. > Each link can have a separate cache policy, origin, etc. The way I see it, > following redirects on the server side can have two different > implementations, let's call them "chaining" and "collapsing". > > The chaining approach. In this implementation, the when the server follows > each link in the redirect chain, it populates the cache with a separate > object for each link. Each object has a distinct cache key. In fact, this is > exactly what would result from an HTTP client following a redirect chain. > This implies that for each link in the chain, plugins should see start and > end transaction events. It also implies that if cache policy is not correctly > specified, following links might always need to go back to the origin. Of > course, this could be desirable in some deployments. > > The collapsing approach. The main difference with the collapsing approach is > that the links of the chain are never stored in the cache. Instead, the > server traverses the redirect chain and stores the final object under the > cache key of the first link in the chain. I think that how this is presented > to plugins is an open question. I'd argue that it should be largely hidden, > since the model is that the final link in the chain *becomes* the response > for the first link. The chain collapses as if it were never there. > > Note that the approaches also imply differences in how requests are logged, > and how they are finally stored. If there are a large number of redirect > chains leading to common objects, perhaps chaining is preferable. If > redirects are used for compatibility or are a fixed implementation artifact, > perhaps collapsing is better. > > As for Traffic Server, I think that it would be desirable to support both > models, provided the default is chosen wisely, and that the semantics of each > approach are well defined. When reviewing plugin APIs and configuration, we > need to think clearly about which model these changes are being made for and > explain and justify them in that light. > > James >