Asp.net already has an option to add static content by adding a staticContent element and clientCache sub-element within the system.webServer section of the web.config file. So, what this does is adds the expiration related headers appropriately. This is how the web.config file will look like.
Above, is an example of two ways to enable caching of static content - one by specifying a hard coded date and another by a length of time.
So, now we know how to cache static content but you must be wondering how does IIS decide what files are static. Yep, this is the same one I was thinking for sometime till I figure out that there is a list of file handlers within the web.config file at C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config that determines which handler is called for which file type. If a file is not specified within this handler settings, the last option "*" kicks in IIS considers the file as a static file. File extensions like css, js, png are not listed in this file are therefore treated as a static file.