A common occurrence of this I've seen in many places (including some of our old code years ago) is using a cookie to store simple client-side choices that you want to persist between requests, for instance the tab that was selected when you were last on a complex page, or some other temporary preference, or as in your example breadcrumbs for navigation.
This falls over as soon as the user has two tabs/windows open because (unless the window is explicitly opened with a different session i.e. in private mode, with File/NewSession in IE, or such) the cookies (even temporary session level ones) are a shared resource. It isn't a big issue usually as more often than not it only concerns superficial UI matters (those that are "nice to have"s rather than breaking something essential), but I can imagine circumstances where the problem could open more serious problems.
Caching in particular seems to be something that's applied without much analysis, I've seen it slow down implementations more often than it sped them up.
What I'd really like is for the browser to send a tab id on every request, so we can scope variable to a tab as well as user.
* it is persistent across refreshes
* it remains even if you leave page to another domain then return to page on same tab
* it disappears if the tab is closed
* it doesn't change as you navigate back/forward
* would be most useful with xhr requests or a hidden field in form post requests.
Downsides:
* no origin security
* no obvious nice way to use with page GETs for server to know which tab a page request is from.
https://developer.mozilla.org/en/docs/Web/API/Window/session...
localStorage is often used for it's persistance across closing/reopening the browser, but for times when you don't want storage to bleed across tabs or closing the browser then session storage is much better, and unlike a cookie doesn't automatically get attached to request so there aren't XSRF worries.
(You still need to be careful of XSS of course.)
I struggle to understand how that could even have happened. Were they storing the results of the DB lookup referenced against my IP somehow?