Caching queries that last longer then then X seconds
Instead, cache only selected queries.  Go through your code and decide which queries are likely to be exactly repeatedly.  On those do SELECT SQL_CACHE ....  On the others do SELECT SQL_NO_CACHE ....
As for the long queries -- improve them.  See this for getting started.  When you have identified a couple of 'slow' queries, open a new Question to get help on making them faster.  Sometimes we can help you make them run 10 times as fast.