I can only describe the way to fix it using Quick Cache as that is the caching plugin I use. But i'm sure all the other main caching plugins also offer a way of doing it.
With Quick Cache there are two options you can use - you can get mobile devices to bypass the cache and take their content direct from the database. This can add a bit of extra burden to your server depending on how many people visit your site on a mobile device. It can also make it slower to load as the page has to be rendered for the mobile device.
The second way to set up user agent referrals to build a spate cache for each user agent. AS there are dozens of different referrer agents - and growing - this means that you will have dozens of cache pages for each page and will use up a lot of disk space if you have a big site. But the page load will be quicker as the device is loading from a cache.
So you have a choice - faster loading but bigger disk space use and less server resources or slower loading and lower disk space but more server resources.
If you want mobile devices to ignore the cache and build pages individually then open up the option No-Cache User-Agent Patterns
Then add in the box text that refers to mobile devices you want to ignore the cache. The list I use is:
This sets it so that any user agent that has any of the above words in it will ignore the cache and build a page directly.
The second way - where you build a page for each user agent is to use the MD5 Version Salt
and add the following to the options box
including the brackets but remember depending on how busy your site is you could easily have 20 or 30 versions of a page in the cache, it is very disk space heavy.
If you are using another cache plugin then you'll need to read the documentation on how to deal with mobile device issues.