On 4/30/13 3:13 AM, Andrea Aime wrote:
Hi,
I'm trying to stand up a multi-level cache of dynamically generated content and
having some design issues with inconsistent version of HTTP protocol used
before and after the cache.

Basically, I have a webapp that generates dynamic content for which it's possible to create an ETag, and handle appropriately the If-None-Modified validation requests, but where we don't have enough information to handle a If-Modified-Since request
instead.
So basically, we need the cache to talk HTTP 1.1 with the webapp.

So far so good. Now enter a second level of caching, a CDN made with cloudfront,
and here is the gotcha: cloudfront only supports HTTP 1.0 requests towards the
origin, which in this case would be TrafficServer.

So I'm wondering, is TrafficServer able to trade between the two worlds, basically
have it so that cloudfront makes a if-modified-since validation request, and
TrafficServer somehow turns into into a if-none-modified towards the dynamic webapp?
Pretty new to caches, so no idea if the thing is feasible at all.



As long as you keep the default setting, it ought to just work. Do you see problems with this? The setting in question is

    CONFIG proxy.config.http.send_http11_requests INT 1

-- Leif

P.s
To make sure I'm not smoking crack (this time at least...), I tried it (sending an HTTP/1.0 request to ATS). Below is a debug tracer from traffic_server, as you can see, the client request is HTTP/1.0, the proxy request to origin is HTTP/1.1, the response from Origin is HTTP/1.1, and finally, the response back to client is HTTP/1.0 (which is a must). This is why conforming to RFC2616 should not be considered optional ;).

+++++++++ Incoming Request +++++++++
-- State Machine Id: 0
GET http://l.yimg.com/a/lib/ycs/bench/100.bmp HTTP/1.0
User-Agent: curl/7.27.0
Host: l.yimg.com
Accept: */*

+++++++++ Proxy's Request +++++++++
-- State Machine Id: 0
GET /a/lib/ycs/bench/100.bmp HTTP/1.1
User-Agent: curl/7.27.0
Host: l.yimg.com
Accept: */*
Client-ip: 192.168.201.14
X-Forwarded-For: 192.168.201.14
Via: http/1.0 loki.ogre.com[FE8000000000000002016CFFFE63288A] 
(ApacheTrafficServer/3.3.3-dev)

+++++++++ Incoming O.S. Response +++++++++
-- State Machine Id: 0
HTTP/1.1 200 OK
Date: Fri, 03 May 2013 20:17:11 GMT
Cache-Control: max-age=315360000
Expires: Mon, 01 May 2023 20:17:11 GMT
Last-Modified: Thu, 11 Mar 2010 23:55:10 GMT
Accept-Ranges: bytes
Content-Length: 100
Content-Type: image/bmp
Age: 0
Connection: keep-alive
Via: http/1.1 l14.ycs.mud.yahoo.com (ApacheTrafficServer/3.2.0)
Server: ATS/3.2.0

[May  3 14:17:11.722] Server {0x7f53c06fe700} DEBUG: (http_hdrs) 
[initialize_state_variables_from_response]Server is keep-alive.
+++++++++ Cached Request Hdr +++++++++
-- State Machine Id: 0
GET http://l.yimg.com/a/lib/ycs/bench/100.bmp HTTP/1.1
User-Agent: curl/7.27.0
Host: l.yimg.com
Accept: */*
Client-ip: 192.168.201.14
X-Forwarded-For: 192.168.201.14

+++++++++ Base Header for Building Response +++++++++
-- State Machine Id: 0
HTTP/1.1 200 OK
Date: Fri, 03 May 2013 20:17:11 GMT
Cache-Control: max-age=315360000
Expires: Mon, 01 May 2023 20:17:11 GMT
Last-Modified: Thu, 11 Mar 2010 23:55:10 GMT
Accept-Ranges: bytes
Content-Length: 100
Content-Type: image/bmp
Age: 0
Connection: keep-alive
Via: http/1.1 l14.ycs.mud.yahoo.com (ApacheTrafficServer/3.2.0)
Server: ATS/3.2.0

+++++++++ Proxy's Response 2 +++++++++
-- State Machine Id: 0
HTTP/1.0 200 OK
Date: Fri, 03 May 2013 20:17:11 GMT
Cache-Control: max-age=315360000
Expires: Mon, 01 May 2023 20:17:11 GMT
Last-Modified: Thu, 11 Mar 2010 23:55:10 GMT
Accept-Ranges: bytes
Content-Length: 100
Content-Type: image/bmp
Age: 0
Via: http/1.1 l14.ycs.mud.yahoo.com (ApacheTrafficServer/3.2.0)
Server: ATS/3.3.3-dev

Reply via email to