What if "Vary" were much more than just HTTP Vary?  It would be nice if the
framework could support the "external" vary (ie, "normal" HTTP Vary) as well
as any internal Vary.

To use general mod_disk_cache structure, we currently have something sorta
like this for vary metafiles:
int cache_version
apr_time_t expires
serialized array of vary headers (ex: accept-encoding, user-agent)

What if we had a serialized table instead:
HTTP_VARY => accept-encoding, user-agent
MY_AUTH_VARY => my_auth_cookie

Where HTTP_VARY was handled by the "HTTP vary" provider and created a vary
key based on users info, and MY_AUTH_VARY was some provider a user wrote so
they could cache different content based on if a user was authenticated or
not (based on a cookie).

So a complete key from a request for this may be:
HTTP_VARYaccept-encoding=gzipuser-agent=MozillaMY_AUTH_VARYauth=1http://doma
in.com/some/url?some=query&string=1

There are cases when may want to vary based on geographical info, time of
day, etc., but "normal HTTP Vary" does not really handle that.  However, it
would not be so hard to break the whol vary process into providers.

-- 
Brian Akins
Chief Operations Engineer
Turner Digital Media Technologies

Reply via email to