#
# cache.config
#
# The purpose of this file is to alter caching parameters of
#   specific objects or sets of objects
#
# Each line consists of a set of tag value pairs.  The pairs
#   are in the format  <tag>=<value>
# 
# Each line must include exactly one primary specifier
#
#   Primary destination specifiers are
#     dest_domain=
#     dest_host=
#     dest_ip=
#     url_regex=
#
#
# Lines may include any number of the secondary specifiers but
#    secondary specifiers may not be duplicated on the same line
#
#   Secondary specifiers are
#     port=
#     scheme=
#     prefix=
#     suffix=
#     method=
#     time=
#     src_ip=
#
# Each line must include exactly one cache directive
#   Cache directives are
#     action=never-cache
#     action=ignore-no-cache          (client & server no cache)
#     action=ignore-client-no-cache   (only client no cache)
#     action=ignore-server-no-cache   (only server no cache)
#     pin-in-cache=<time>
#     revalidate=<time>
#     ttl-in-cache=<time>             (force caching and expire after <time>)
#
# Each line may also contain various "tweaks" which adjust caching parameters.
#   Tweaks are
#     cache-responses-to-cookies=<value>
#       - Change the style of caching with regard to cookies. This effectively
#         overrides the configuration parameter
#           proxy.config.http.cache.cache_responses_to_cookies
#         and uses the same values with the same semantics. The override happens
#         only for requests that match.
#
# Examples
#
#  Revalidate all http objects from www.example.com after 2 hours 
#    dest_domain=www.example.com   scheme=http  revalidate=2h
