How often does a typical miner refresh their candidate block? I realize that this is a general question with no "correct" answer, as every miner can operate differently.

Having said that, I'd like to be able to display a list of transactions that would be considered a fair representation of the transactions in the memory pool that are poised to be mined.

So far I have been:


Using getblocktemplate to get the list of transactions.
Refreshing the list when a new block arrives, or at 1 minute intervals.




Using getblocktemplate seems logical, as I imagine the majority of miners would like to get the most amount possible in fees from their blocks.

I'm then guessing that miners would want to refresh their candidate block at certain intervals to check for higher-fee transactions in the mempool.

Is it likely that miners would be inclined to refresh their candidate blocks much more (or less) than every minute?
There's several factors at play, one of them is that the underlying implementation of the Stratum protocol on many miners. Due to the way they are implemented many miners will drop a connection with their pool if they have not seen any updates in 30 seconds, as a result most pools will push work updates at this frequency. 

Optimally, mining pools would update their work based on the block reward rather than a fixed timer. If the fee amount in their template has not moved it is not optimal for them to push new work, but if it has increased by a substantial monetary value it is optimal for them to push new work regardless of how recent the last update was. 



Historically restarting work took a long time, but modern ASICs tend to take hundreds of milliseconds to alter the work they are performing, whereas older miners like HashFast could take tens of seconds.