Appendix A: ISA Server Caching
Criteria
ISA Server uses several criteria when determining which objects to cache and
how to cache them. This appendix provides an overview of the caching criteria
used by ISA Server.
HTTP Caching
ISA Server uses the following criteria when caching HTTP objects:
HTTP Methods. The Request Method must be an HTTP GET. Otherwise,
ISA Server bypasses the cache mechanism. An exception is the case of
negative caching. If the request is an HTTP PUT or an HTTP DELETE, ISA
Server purges obsolete data from the cache.
Dynamic Content. By default, ISA Server does not cache dynamic content,
which is defined as URLs that contain a “?.” If you enable caching of
dynamic content, ISA Server caches the object only if the response header
contains an Always Cache meta-tag. This scenario hardly occurs, and for
performance reasons, you should carefully evaluate caching of dynamic
content.
HTTP Request Headers. ISA Server bypasses the caching mechanism for
objects with certain request headers.
The following request headers cause ISA Server to bypass the caching
mechanism entirely. ISA Server does not look for the object in its cache and
does not store the response.
• Cache-control: no-store
• Authorization (An exception to this rule occurs if the Web server
explicitly allows caching by sending a cache-control: public, s-maxage,
or must-revalidate header.)
The following request headers cause ISA Server to bypass the cache when
retrieving the object, but ISA Server may cache the response for future use:
• Cache-control: no-cache (The object must be validated again during
subsequent requests.)
• Pragma: no-cache (The object must be validated again during
subsequent requests.)
• If-Match
• If-Unmodified-Since
• If-Range
2 Appendix A: ISA Server Caching Criteria
The following request headers allow the client to override the default cache
expiration behavior on a per-request basis:
• Cache-Control: max-age
• Cache-Control: min-fresh
• Cache-Control: max-stale
• Cache-Control: only-if-cached
HTTP Response Codes. By default, ISA Server only caches responses with
the following HTTP response codes:
• 200 success
• 203 non-authoritative information
• 300 multiple choices
• 301 moved permanently
• 410 gone
HTTP Response Headers. ISA Server always caches objects with the
following HTTP response headers:
• Cache-Control: public
• Cache-Control: max-age
• Cache-Control: proxy-revalidate
• Cache-Control: must-revalidate
ISA Server never caches objects with the following HTTP response headers:
• Cache-Control: no-cache
• Cache-Control: no-store
• Cache-Control: private
• Pragma: no-cache
• Set-cookie
• WWW-Authenticate
ISA Server caches objects with a WWW-Authenticate header only if
the response also contains a Cache-Control: public header. This
combination of headers is extremely rare. In all other cases, if a single
response contains of the headers that cause ISA Server to cache the object
and one of the headers that cause ISA Server to not cache the object, ISA
Server does not cache the object.
Note
Appendix A: ISA Server Caching Criteria 3
Vary header. Web servers use the Vary header to indicate the presence of
multiple versions of an object with the same URL. The version that is
returned depends on one or more request headers that are specified as
arguments to the Vary header. ISA Server can store multiple versions of the
same object in its cache with the following implementation limitations:
• The object can vary on only one request header.
• The varying header name cannot be longer than 31 characters. The
limitation refers to the header name such as “User-Agent,” not the value.
• ISA Server reduces the maximum URL length by the size of the varying
header and its value.
Headers added by the ISA Server for caching. ISA Server adds the Age
header to all objects served from the cache. The Age header indicates how
long the object has been in the cache without ISA Server having revalidated
the object. The information in the Age header can be useful when you
troubleshoot reported caching problems or when you must know whether an
object was cached. ISA Server also adds the Warning header on rare,
appropriate occasions when required by the HTTP specifications.
Download Errors. If there is an error downloading an object that is being
written to the cache, ISA Server deletes the object from the cache. Such an
error can be caused by the client disconnecting before the download is
complete.
Cache Filters. You can configure routing rules that disable caching for
certain requests. You can use such routing rules for Web sites that users
gain access to by using a fast network connection. For more information on
routing rules, see Module 9, “Configuring ISA Server for an Enterprise,” in
course 2159A, Deploying and Managing Microsoft ISA Server 2000.
Caching Myths
Microsoft Product Support Services (PSS) has identified a number of common
misconceptions about the caching mechanism that ISA Server uses. The
following factors do not affect caching:
URLs containing the strings such as cgi or cgi-bin.
ASP pages or other content that is dynamically created on the Web server.
Responses that don't contain a Last-Modified date. ISA Server only caches
responses without a Last-Modified date if you configure ISA Server to do
so.
META tags within HTML. Most Web servers do not move META tags
from the HTML code to the HTTP headers.
The type of object, such as if the object is a file other than a Web page.
4 Appendix A: ISA Server Caching Criteria
FTP Caching
Because FTP servers do not return the helpful information that Web servers do,
FTP caching is much simpler. ISA Server caches all FTP responses for a fixed
period of time that you specify by using ISA Management.
Active Caching
The operations of active caching depend on three factors:
Time of last object access. When you configure active caching, ISA Server
retrieves Web objects with a Time-to-Live (TTL) that is close to expiring.
When you configure ISA Server to perform active caching less frequently,
ISA Server actively retrieves Web objects only if a user recently requested
the object. When you configure ISA Server to perform active caching more
frequently, ISA Server actively retrieves Web objects even if more time has
passed since a user last requested the object.
System load. When ISA Server determines that the number of current client
sessions is low, ISA Server updates the objects that are marked for active
caching as soon as 50% of the object’s current TTL has expired. As the
number of current client sessions approaches the maximum number of client
sessions that ISA Server allows, active caching only retrieves objects that
have a TTL that is close to expiring.
System performance. ISA Server contains several mechanisms that ensure
that active caching does not place an undue burden on your computer’s
system performance.