Kernel caching and IIS 7 output caching
When you enable output caching on the server, you also enable kernel caching and IIS 7 output caching. Output caching was introduced in IIS 7, while IIS 6 already supported kernel caching. Serving a request from these caches is faster than serving from the ASP.NET output cache, because they are built into IIS itself. Here is how this works.
When a new request arrives at the web server, it is initially processed by http.sys
, a kernel driver. This driver first tries to serve the request from the kernel cache. If it can't, it sends the request to a port that an IIS thread listens to. This IIS thread then tries to serve the request from the IIS 7 output cache. If it can't, it hands the request on to ASP.NET, which activates another thread to actually process the request. ASP.NET tries to serve the request from its own cache, and if it can't, it generates the output. The resulting output is sent to a third thread, which sends it to the browser.
This means...