Gianugo Rabellino wrote:
Stefano Mazzocchi wrote:
...
Question: (and an important one)
Suppose you have a resource like
/images/logo
that you hit with two different user agent and that a pipeline
renders differently depending on the user agent, how can a proxy
behave friendly to this? do we have a way to specify that a specific
request has to be matched not only against a URI but also against the
user-agent that requested it?
This can be done in a theory, once (and if) we'll have real proxy
support in place. The first thing that can be done is starting to have
real "Etag" support: an "Etag" is an unique identifier (think
checksum) that represents the given URI from a server side view. This
means that the same URI can lead to different etags being generated,
according to internal server logic (request parameters, user agents,
you name it). ù
Since an Etag is just a string, I guess that the cache key could do
the job, but I'm not sure that it might be the better way security
wise (you'll end up handing to the world your private cache keys, I'm
not sure that this is a good thing). Also, Etags are useless if there
is no conditional request handling: the proxy will ask Cocoon "give me
that URI, identified by this Etag, if not modified since this
timestamp": Cocoon must be able to analyze that query and reply either
with an 304 status code (not modified) or with a 200 with the actual
content.
In this particular case, however, the cleanest solution is using the
HTTP/1.1 "Vary:" header. This header is supposed to contain all the
request fields that must match for a proxy to decide that a resource
is still valid even if requested by different users. Here you can
specify that the user-agent is one of such headers, but:
0. this is one of the most undocumented headers around;
1. you still have to support Etags too (don't really know why);
2. there is no advanced feature like regular expressions or substring
(proxies might implement it, but it's outside your control), so
slightly different user agents (language, version, operating systems)
will lead to regeneration;
3. I dare you to find a clean solution from the sitemap POV to express
this kind of conditions. :-)
Ahem...
http://cvs.apache.org/viewcvs.cgi/xml-cocoon2/src/java/org/apache/cocoon/selection/BrowserSelector.java?rev=1.7&content-type=text/vnd.viewcvs-markup
ObjectModelHelper.getResponse(objectModel).addHeader("Vary", "User-Agent");
Vadim
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]