AppendixA:ISAServerCachingCriteriaISAServer 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 CachingISAServer uses the following criteria when caching HTTP objects: HTTP Methods. The Request Method must be an HTTP GET. Otherwise, ISAServer bypasses the cache mechanism. An exception is the case of negative caching. If the request is an HTTP PUT or an HTTP DELETE, ISAServer 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 ISAServer 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 ISAServer 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, ISAServer 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, ISAServer 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. provides an overview of the caching criteria used by ISA Server. HTTP Caching ISA Server uses the following criteria when caching HTTP objects: HTTP