内核模式缓存和用户模式缓存之间有什么区别以及如何跟踪它们?
解决方法
Kernal模式缓存本质上是处理操作系统级别的缓存请求,因此可以访问存储在其中的内容,而无需访问其他常用管道(即,它不必转到ASP.NET或IIS级别的缓存来检查内容):
因此,请求命中初始缓存(http.sys),找到它需要的东西并将其发送回去,所有这些都无需继续沿着管道继续进行.
作为结果,它通常很快.但是它的局限性在于它不支持许多用户级功能,例如身份验证和授权,因此它可能不适合所有方案.
另一方面,用户模式将填补无法使用Kernal模式的空白,主要包围授权/验证内容(因为它需要检查用户是否可以实际访问内容),但有many other scenarios可能导致不使用http.sys缓存.
关于实际检查是否正在缓存内容(以及可能的原因),您可以使用FREB(失败的请求事件缓冲).以下命令可用于查找在内核模式下缓存的内容:
netsh http show cachestate