Best Caching strategy
I am by no means a caching expert, but here's what I do know...

When you wrap a chunk of Twig code in a cache tag, it processes that chunk of code all the way down to HTML, then stores that HTML in the database. A cache key references this pre-parsed HTML code, so it can be easily called up later.

But in addition to the HTML itself, two other pieces of data are stored alongside it:


A list of criteria used to generate the HTML
A list of elements used to generate the HTML


The main reason that criteria and elements are also recorded is for the purpose of cache invalidation... So for example, if someone were to change an element associated with a cached chunk, that chunk would immediately become invalidated. You wouldn't need to write a separate plugin in that case, the cache would be invalidated simply by updating a corresponding element. Something similar happens to criteria, if the criteria results would have changed.

Check out this question which I asked awhile ago... It goes into greater depth about the related caching tables, and how they work together to make sure your cache stays fresh.

Also, make sure you've reviewed the official recommendations about the proper usage of cache tags, to figure out the best times to use (and not to use) the tag.

Lastly, I'd recommend taking the time to watch this excellent video from Barrel Strength Design about the wonders of the cache tag. There is a lot to be learned from that video, and it's a great way to get your bearings on caching in general.