Transparent Content Negotiation

Description

Transparent content negotiation is called "transparent" because it makes visible to the intermediate parties (between the origin server and the user agent e.g. proxy cache) all the variants that exist within the origin server and gives them the ability to choose the best representation on their behalf. Transparent content negotiation is a combination of proactive and reactive content negotiation. In reactive content negotiation, when a cache is provided in the form of a list of available representations of the response and the intermediate party has fully understood the dimensions of the variance, then the intermediate party becomes capable of performing proactive content negotiation on behalf of the origin server for subsequent requests on that resource.

Optimization of content negotiation could be achieved for example as explained below:

Scenario 0 - without transparent content negotiation:

Scenario 0

Scenario 1 - if the intermediary parties cache both variant lists and variants:

Scenario 1

Scenario 2 - the user agent can send small Accept- headers that contain enough information to allow the server to choose the best variant using a "remote variant selection algorithm", this possibility is made explicit in the "Negotiate" request header:

Scenario 2

Scenario 3 - If we combine the above two scenarios and assume that the user agent sends Accept- headers that contain enough information and allow intermediate parties to choose the best variant, this optimization scenario is achieved:

Scenario 3

Advantages and Disadvantages
Advantages Disadvantages
  • The reduction of response time and bandwidth consumption due to the distribution of the negotiation work that would otherwise be required of the origin server.
  • The gain of the second request delay of reactive negotiation when intermediary party uses the cache to be able to correctly guess the right response.
  • The underlined assumption of maximum resource cachability which in practice is only true for static and Unencrypted content, implying that it would not be cost effective in contexts where transmissions are cyphered.

References
[{{ reference.id }}] : {{ reference.title }}