IIS 8.0中内核模式和用户模式缓存之间的区别

Pra*_*n V 10 asp.net caching http.sys iis-8

内核模式缓存和用户模式缓存之间有什么区别以及如何跟踪它们?

Rio*_*ams 19

Kernal模式缓存本质上是处理操作系统级别的缓存请求,因此可以访问存储在其中的内容,而无需沿着常用管道的其余部分进行访问(即,它不必转到ASP.NET或IIS级别的缓存来检查内容):

在此输入图像描述

因此,请求命中初始缓存(http.sys),找到它需要的内容并将其发送回去,所有这些都无需进一步深入管道.

作为结果,它通常很快.但是它的局限性在于它不支持许多用户级功能,例如身份验证和授权,因此它可能不适合所有方案.

另一方面,用户模式将填补无法使用Kernal模式的空白,主要包围授权/验证内容(因为它需要检查用户是否可以实际访问内容),但有许多其他可能导致http.sys缓存不被使用的场景.

关于实际检查是否正在缓存内容(以及可能的原因),您可以使用FREB(失败的请求事件缓冲).以下命令可用于查找在内核模式下缓存的内容:

netsh http show cachestate
Run Code Online (Sandbox Code Playgroud)