I keep getting old data in my blocks for anonymous users. The "Who's new", "Recent comments", "Highest Points" (userpoints) blocks on the front page are all over 24 hours out of date.

Logged in users get up to date blocks.

The front page has updated, for all users, about 5 hours ago when a new node was published and promoted. However, the blocks there remain 27 hours old.

My "Performance" settings are:

Caching mode: Normal
Minimum cache lifetime: 1 hour
Page compression: Enabled
Block cache: Enabled
Optimize CSS files: Enabled
Optimize JavaScript files: Enabled

Clearing cached data fixes this. I know that stopping all caching would fix this, but that's not practical on this server.

It's fine for the data in the blocks to get slightly stale (an hour), but to be a day out of date is no good for us. How do I fix this please?