HTTP.sys不缓存内容的实例

本文介绍HTTP.sys驱动程序不缓存内容的实例。

原始产品版本: Internet Information Services
原始 KB 数: 817445

HTTP.sys不缓存的情况

响应 HTTP.sys 缓存使用请求标头中的相应标志缓存任何请求。 此缓存按请求禁用。 但是,如果以下一个或多个条件为 true, HTTP.sys 则不会缓存请求响应:

  • 请求不是匿名请求。

  • 请求需要身份验证。 (例如,请求包含标头 Authorization:

  • 网站配置为使用页脚。

  • 动态压缩已启用,用于响应。

    注意

    静态压缩可用于 HTTP.sys 缓存。

  • 静态文件是通用命名约定 (UNC) 文件, DoDirMonitoringForUnc 并且未启用注册表项。

    注意

    可以使用 DoDirMonitoringForUnc 注册表属性(DWORD 值)将静态文件缓存切换回更改通知缓存。 设置如下: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Inetinfo\Parameters
    默认值为 0 或未启用。 可以将其设置为 1,以基于更改通知启用静态内容的缓存。

  • 请求包含查询字符串。

  • 缓存已禁用。 (也就是说, MD_VR_NO_CACHE 元数据库属性等于 1。

    注意

    产品文档中提供了有关元数据库属性的详细信息 MD_VR_NO_CACHE 。 若要查看本文档,请参阅 DisableStaticFileCache

  • 请求具有实体正文。

  • 为 URL 启用证书映射。

  • 为网站启用自定义日志记录。

  • 请求 HTTP 版本不是 1.1 或 1.0。

  • 请求包含 Translate: f 标头。

  • Expect:不存在完全100 continue包含的标头。

  • 请求包含标头 If-Range:Range: 标头。

    注意

    HTTP.sys 仅处理整个响应。 HTTP.sys 不会尝试发送范围响应。

  • 响应跨越多个 SendResponse 调用和 SendResponseEntityBody 调用。

    注意

    可缓存响应必须在单个向量 SendResponse 调用中关闭。

  • 总响应大小大于每个响应的最大大小。 最大值由 UriMaxUriBytes 注册表项控制,默认值为 256 KB。

  • 响应标头大小大于每个响应的最大标头大小。 默认值为 1,024 字节。

  • 缓存已满。 默认大小与计算机中的物理内存成正比。

  • 响应长度为零。

  • 安装了不识别缓存的 Internet 服务器应用程序接口 (ISAPI) 筛选器。

    注意

    默认情况下,ISAPI 筛选器不识别缓存。 必须设置筛选器的 FilterEnableCache 元数据库属性,使其具有缓存感知性。 默认安装 IIS 中的所有筛选器都是可感知缓存的。 这包括 FrontPage 和 ASP.NET。
    有关元数据库属性的详细信息 FilterEnableCache ,请查看 Windows 10 部署中的新增功能。

  • 静态文件作为默认文档进行访问。 (例如,根目录中存在Default.htm。按名称 (http://contoso.com/default.htm/) 访问特定文件会导致 HTTP.sy缓存该文件。 通过请求根文件夹(http://contoso.com/)访问网站会导致非缓存响应。

    注意

    如果默认文档列表中列出的第一页不可访问,IIS 将尝试为默认文档列表中的第二页提供服务。 在这种情况下,不会从缓存中提供该静态页面。