Some companies (for example: IMVU) are known to push updates several times a day. It's generally referred to as "continuous deployment".
The average time spent on a page greatly depends on the application's architecture.
I think HTML5 Appcache is primarily intended to be employed for caching the code of "single page applications", i.e. those applications in which all user interaction happens within a single pageview - as far as the browser is concerned. Gmail is a good example of a single-page app. It doesn't use appcache though, but it could.
The user may not experience it as a single page view, as (practically) the whole visible document could be replaced by other contents downloaded from the server. A user may even see his location bar change while "browsing" inside the app, using the HTML5 History API.
A user might be using a single-page app (think gmail) for hours on end, possibly even days if he doesn't shutdown his computer (or close his browser).
By design, a browser which is asked to load a page for which it has an appcache-cache (this works differently than the normal browser cache) will always load the cached version from disk, which is not necessarily the most current version. Loading from cache means the application starts without any network latency. Only after loading the app will the browser check for an updated cache manifest. By default, the user is not informed of any such updates. He would only see the update after reloading the app in his browser.
If the user has an app open for a few hours, there could have certainly be updates in the meantime. As such, to maximize the chance that on a next start of the application the user will see the most recent version, the application should intermittently check for updates. If the appcache manifest has changed, the cache will be updated. The next time the user starts the app, the browser will load the latest version it has loaded while the user was working with the app earlier. The polling interval could be adjusted to the expected interval between new releases.
It's also possible to alert a user of an available update. There could be a unobtrusive message "An application update is available, load it now? (ok) (dismiss)" Since all resources would have been fetched beforehand, reload would be almost instantaneous (all from disk). More difficult is ensuring all the user's data (and "session state") is preserved.