Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article introduces Instances where the HTTP.sys driver doesn't cache content.
Original product version: Internet Information Services
Original KB number: 817445
Situations where HTTP.sys doesn't cache
The HTTP.sys response cache caches any request with the appropriate flag in the request header. This cache is disabled on a per-request basis. However, if one or more of the following conditions are true, HTTP.sys doesn't cache the request response:
The request isn't an anonymous request.
The request requires authentication. (For example, the request contains an
Authorization:header.)The website is configured to use a footer.
Dynamic compression is enabled and is used for the response.
Note
Static compression can be used with
HTTP.syscaching.The static file is a Universal Naming Convention (UNC) file and the
DoDirMonitoringForUncregistry key isn't enabled.Note
You can use the
DoDirMonitoringForUncregistry property (a DWORD value) to switch the static file cache back to a change notification cache. This is set as follows:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Inetinfo\Parameters
The default value is 0, or not enabled. It can be set to 1 to enable caching of static content based on change notification.The request contains a query string.
The cache is disabled. (That is, the
MD_VR_NO_CACHEmetabase property equals 1.)Note
More information about the
MD_VR_NO_CACHEmetabase property is available in the product documentation. To view this documentation, see DisableStaticFileCache.The request has an entity body.
Certificate mapping is enabled for the URL.
Custom logging is enabled for the website.
The request HTTP version isn't 1.1 or 1.0.
The request contains a
Translate: fheader.An
Expect:header that doesn't contain exactly100 continueis present.The request contains either an
If-Range:header or aRange:header.Note
HTTP.sysprocesses only whole responses.HTTP.sysdoes not try to send ranged responses.The response spans multiple
SendResponseandSendResponseEntityBodycalls.Note
A cacheable response must come down in a single, vectored
SendResponsecall.The total response size is larger than the per-response maximum size. The maximum is controlled by the
UriMaxUriBytesregistry key, and the default value is 256 KB.The response header size is larger than the per-response maximum header size. The default value is 1,024 bytes.
The cache is already full. The default size is proportional to the physical memory in the computer.
The response is zero length.
An Internet Server Application Program Interface (ISAPI) filter that isn't cache-aware is installed.
Note
By default, ISAPI filters are not cache-aware. You must set the
FilterEnableCachemetabase property for the filter to make it cache-aware. All filters in a default installation of IIS are cache-aware. This includes FrontPage and ASP.NET.
For more information about theFilterEnableCachemetabase property, view What's new in Windows 10 deployment.A static file is accessed as a default document. (For example, Default.htm exists in the root directory.) Accessing the specific file by name (
http://contoso.com/default.htm/) causesHTTP.sys to cache the file. Accessing the website by requesting the root folder (http://contoso.com/) results in a non-cached response.Note
If the first page that's listed in the Default Document list is inaccessible, IIS tries to serve the second page in the Default Document list. In this situation, that static page will not be served from the cache.