On 30/04/2013 9:14 p.m., 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.
Both If-Modified-Since and If-None-Modified are optional features. There is no requirement in HTTP for any of the client, gateway or server to use either of them.
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 Squid.
That is unfortunate. A missing feature in CloudFront. Even more unfortunately it coincides with Squid missing the same feature ...
So I'm wondering, is Squid able to trade between the two worlds, basically have it so that cloudfront makes a if-modified-since validation request, and Squid 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. Any other suggestion about how this could be handled?
Adding the If-None-Modified feature to either CloudFront or Squid is probably a good solution. I believe measurement-factory.com have a project underway to add it to Squid. You may want to contact Alex there about getting access or sponsoring further progress.
Amos