Caching in ASP.net is something, when done well can do magic to your web app.
Because it uses private bytes and has the ability to use beyond the process allocated address space, so it does magic by serving you pages and data pinned inside the Memory instead of DB.
People prefer optimizing their Cache by moving after a set amount of Cache Data to db.
Which may be great for ASP.net based reports where the queries takes more time to process than usual and if DB and server network capacity is enough to mimic like a In memory scenario one can store the processed reports in DB and save time in query processing.
But most of the time people copy and paste this approach and this fails in their specific application need.
So what is best..?
Caching style should be custom, and according to your need, but still if you feel hungry to have some thing different, you may try the Steven Smith