As with any kind of response caching, the presumption is that, *if* the Origin 
included Cache Control headers that permitted Caching of a 400 response, it 
(the Origin) must know and expect that subsequent requests with matching "cache 
key" may be served directly from the caches. If the Origin did not want the 
response to be served from a Cache directly, it should not have indicated that 
the response was cacheable or should have included enough information to tell 
the Caches when to revalidate or when not to serve from the Cache directly. 

More specifically, if the Origin returned a 400 because 

(a) the request URL was incorrectly formatted, subsequent requests with the 
same kind of URL may continue to result in 400
(b) a request header that was inconsistent or invalid, subsequent requests with 
that specific header may continue to result in 400  etc..

In the first case, caches using request URL as the default cache key require no 
additional Vary header to serve from the cache, while in the latter case, 
caches need to be told on which header they may serve from the Cache for 
subsequent requests.

The bottom line, I think is that, I don't specifically see anything different 
to caching (or not) a 400 response as opposed to a 404, for instance.

It's a different matter, if the Origin is broken and one needs to "accommodate" 
for the brokenness of the Origin. Even in such a case, I'd think the *default* 
ATS behaviour should not be addressing a "broken" Origin behaviour.

- Sudheer


> On Nov 9, 2016, at 10:56 AM, Alan Carroll 
> <solidwallofc...@yahoo-inc.com.INVALID> wrote:
> 
> But that would be very specific to the bad request. Why would it benefit the 
> next request to be denied with that same response?
> 
> 
>    On Wednesday, November 9, 2016 11:23 AM, Sudheer Vinukonda 
> <sudheervinuko...@yahoo.com.INVALID> wrote:
> 
> 
> Generally, I'd think if the Origin responded with Cache-Control headers that 
> permit caching, it should be cached. 
> For e.g., for a 400 response, the Origin may include a Cache-Control: Vary 
> header indicating what parts of the request that it didn't like.
> - Sudheer
>       From: Alan Carroll <solidwallofc...@yahoo-inc.com.INVALID>
> To: Dev <dev@trafficserver.apache.org> 
> Sent: Wednesday, November 9, 2016 8:17 AM
> Subject: Don't negative cache 400 responses.
>   
> We are having this problem inside Yahoo! and it seems to me to be wrong to 
> negative caches a 400 (HTTP_STATUS_BAD_REQUEST) because that is a user agent 
> / proxy problem, not an origin server problem. It can lead to easy (if 
> temporary) denial of service by simply sending a bogus request through ATS. 
> I'd like to clip that status out of is_negative_caching_appropriate.
> 
> 
> 
>   
> 

Reply via email to