I understand that Google uses 'Average Visit Duration' as one factor influencing ranking - but how does it determine how long a user has stayed on a certain page for? Is it as simple as registering when they left Google, then registering when clicked back? I can't think of any efficient way of measuring this.

Do you have an official note on that? I would very much doubt it factors in ranking, as it's impossible for them to measure that unless the site has Google tracking code, which is not universal at all. I would bet this is another of the abundant SEO myths.
– RodolfoJan 24 '14 at 22:52

It could well be. It's just something I've been told by a number of sources. (I'm talking actual SEO blogs as well.) It corresponds to what I've noticed with my website too.
– ZetlandJan 24 '14 at 22:58

Google ranks high quality sites better. People tend to stay longer on high quality sites. So there will be a correlation (as in your accounts), that does not necessarily imply a causal connection. However Google collects quite a lot of data via the GDN (Google Delivery Network, i.e. Adsense etc), so they have a solid basis to extrapolate anything they cannot measure directly.
– Eike PierstorffJan 28 '14 at 13:20

So Google determines visit time the same way that Analytics does? What about websites that don't have analytics installed?
– ZetlandJan 24 '14 at 22:17

I don't know or find any references that says that google have another way to do calculation of the time a user has stayed on a page. To determine how long a stayed they need a token or something that the site developpers put in place to contact google services to notify that user X is loading the page Y right now. What they can do (and probably do) is gather data from the Chrome user's navigation habits and extrapolate from this.
– Pierre-Marc David CaronJan 24 '14 at 23:20

Once I did my own data analytics to fit a customer needs. Then, I face your question: how to determine how long the user stayed on a site. Better, how to determine when the user leaves your site.

From the experience I had on this project, I believe google just do an estimative when the user leaves the last viewed page. Although you can use js events like onbeforeunload, onunload, they are no reliable and, sometimes, even dangerous. We know Google does not use them, since we see not network activity when we leave any page.

Now, to estimate the time a user stayed in a site is easy. For example, if a user has entered in a site and has viewed 3 pages. Is very easier to know when the user has started viewing the page. You may know if he left a previous page after the last interaction or when he opened a new page. But it's very difficult to determine when he leaves the last page. But, doing a estimative is simple. If he stayed 30 seconds on the first two pages, probably he stayed around 30 seconds on the last page as well. Total: 1:30.

If the Google searcher goes back to SERP and clicks a result of out it then Google can know how much time was spent in the site visited in the last click. It can average from 100's of visitors reaching that web page through SERP.

If visitors find solution in a click and don't search the same keywords back again in Google then Google can assume that satisfactory solution was found in the site reached from SERP. This should be the prime factor in site rankings.

This is what I understand to be the case. However, does Google measure this at the point of executing the search again, or on clicking another result? I ask this because it is possible for someone to Ctrl+Click on a result to open it in a new tab. I do this myself - Ctrl+Click on one result, and then a second or two later, Ctrl+Click another result. Does Google consider this, and penalize the first website for 'only engaging me for 2 seconds'?
– GarrulinaeJul 8 '14 at 5:21