The Vary
header defines which request headers a cache mechanism should take into account when building its cache key. For example, if the contents of a web page depend on a user's language preference, the page is said to vary on language. By default, Django's cache system creates its cache keys using the requested fully-qualified URL-for example, http://www.example.com/stories/2005/?order_by=author
.
This means every request to that URL will use the same cached version, regardless of user-agent differences such as cookies or language preferences. However, if this page produces different content based on some difference in request headers-such as a cookie, or a language, or a user-agent-you'll need to use the Vary
header to tell caching mechanisms that the page output depends on those things.
To do this in Django, use the convenient django.views.decorators.vary.vary_on_headers()
view decorator, like so:
from django.views.decorators.vary import vary_on_headers ...