User Mode or Kernel Mode…Which Caching Method Did We Use?

In response to our article Inside Microsoft.com Moving Microsoft Update Downloads to x64 we had a great question posed to us about why we use user-mode caching instead of kernel-mode caching in IIS6.0 for the download infrastructure for Microsoft Update. 

There are a couple reasons we use user-mode cache versus kernel-mode cache on these servers. The Microsoft Update client makes byte-range requests when requesting data, so when evaluating which type of caching we wanted, if any, to use with IIS6.0 for these download servers the ability to handle these byte-range requests was a prerequisite. In looking at kernel-mode caching it was determined that this would not work for our purposes due to the fact that HTTP.sys only sends the whole response and will not attempt to send range responses, thus kernel-mode cache will not cache the responses, not even the file that the byte-range is part of. This led us to evaluate user-mode caching. User-mode caching will send a byte-range request; however it will not cache just the byte-range but will cache the entire file. Thus we can take advantage of user-mode caching but not kernel-mode caching for this application due the need to serve byte-range requests.  For more information you can look at pages 745 of the ‘Internet Information Services (IIS) 6.0 Resource Kit’, ISBN 0-7-7356-1420-2. It is also freely available online https://www.microsoft.com/downloads/details.aspx?FamilyID=80A1B6E6-829E-49B7-8C02-333D9C148E69&displaylang=en, the section cache settings is located under chapter 7 ‘Web Server Scalability’.