I've come across quite a tricky bug for caching of views with exposed filters, so let me just give a brief background.
I had a view (panel pane inside panel page) which displays a list of content (10 results + pager) with a single exposed filter which links to select a taxonomy term.
The options were
For some reason whenever Term 1 was selected (done with AJAX) the result was that it was reset to Any while Term 2 and Term 3 worked fine.
After a lot of time running through the code I belive that the error is that the way views create the cache key for the view is:
$key_data = array( 'result' => $this->view->result, 'roles' => array_keys($user->roles), 'super-user' => $user->uid == 1, // special caching for super user. 'theme' => $GLOBALS['theme'], 'language' => $GLOBALS['language'], );
This is fine for a lot of cases, but in the case where a single selection of an exposed filter matches another result ("Any" in my case) views will handle those two results like they are the same and return the cached version, Any or Term 1 whichever was rendered first.
Editing one of the 10 first nodes and changing the term "fixed" the issue.