AppendixA:ISAServerCaching
Criteria
ISA Server uses several criteria when determining which objects to cache and
how to cache them. This appendix provides an overview of the cachingcriteria
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, ISAServer does not cache dynamic content,
which is defined as URLs that contain a “?.” If you enable caching of
dynamic content, ISAServer 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. ISAServer bypasses the caching mechanism for
objects with certain request headers.
The following request headers cause ISAServer to bypass the caching
mechanism entirely. ISAServer 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 ISAServer to bypass the cache when
retrieving the object, but ISAServer 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 AppendixA:ISAServerCachingCriteria
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, ISAServer 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. ISAServer 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 ISAServer to cache the object
and one of the headers that cause ISAServer to not cache the object, ISA
Server does not cache the object.
Note
AppendixA:ISAServerCachingCriteria 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. ISAServer 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.
• ISAServer reduces the maximum URL length by the size of the varying
header and its value.
Headers added by the ISAServer for caching. ISAServer 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 ISAServer 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. ISAServer 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, ISAServer 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 ISAServer for an Enterprise,” in
course 2159A, Deploying and Managing Microsoft ISAServer 2000.
Caching Myths
Microsoft Product Support Services (PSS) has identified a number of common
misconceptions about the caching mechanism that ISAServer 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. ISAServer only caches
responses without a Last-Modified date if you configure ISAServer 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 AppendixA:ISAServerCachingCriteria
FTP Caching
Because FTP servers do not return the helpful information that Web servers do,
FTP caching is much simpler. ISAServer 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, ISAServer
retrieves Web objects with a Time-to-Live (TTL) that is close to expiring.
When you configure ISAServer to perform active caching less frequently,
ISA Server actively retrieves Web objects only if a user recently requested
the object. When you configure ISAServer to perform active caching more
frequently, ISAServer actively retrieves Web objects even if more time has
passed since a user last requested the object.
System load. When ISAServer determines that the number of current client
sessions is low, ISAServer 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 ISAServer allows, active caching only retrieves objects that
have a TTL that is close to expiring.
System performance. ISAServer contains several mechanisms that ensure
that active caching does not place an undue burden on your computer’s
system performance.
. Appendix A: ISA Server Caching
Criteria
ISA Server uses several criteria when determining which objects to cache and
how to cache them. This appendix. 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