Sometimes developers don't understand why they would need to use caching in their custom components. Really, why? Wouldn't it be simpler to just call the database API methods and format output?

Yes, it's just that neat and simple and will work if your website serves one user. Well, perhaps not one, but it will work for up to 10 or 20 concurrent users depending on the hardware. But as the number of concurrent users grow, the website's life is getting insufferable. If a Component 2.0 working cycle performing 100 uncached database transactions is 0.1 sec, a hundred of concurrent users would require 10.000 transactions and the component working cycle will reach unacceptable 5 to 10 sec.

Remember that the cache speed is dramatically higher than that of the database. If a component generates output for 2 sec in uncached mode, the first user will be served in 2 sec (to fetch the initial data from the database and put in on cache), while all subsequent users will be served much faster, in 0.1 sec approximately.

Another matter that require good understanding is cache lifetime. In "Auto+Managed" mode, the system tracks changes in database records and resets cache chunks whenever a particular record changes. In "Auto" mode, the component is responsible for setting the cache lifetime; it is recommended to set the maximum possible time interval according to the underlying business logic.

To summarize: