in general the best solution is in the single point of truth so the last modified column is a good solution.
you can ofc add a cache layer that is used for the reads as long as you can be sure that the writes to the database invalidate the specific cached-row / set.
you could use refresh cycles or a socket that pushes all changes automatically to the client by comparing md5 sums of the "current state" or something equivalent.
if you want to have a more controlled system than hashing strings you could think of versioning and the client sends something like "i'm on version X and i haven't modified the state" and the server response "no changes" or "new version ready" and you can think of a merge.
I guess the client will be stateful and the API should be stateless so this would be one option :)
there is http://stateless.co/hal_specification.html this as well for a more complex communication structure without keeping the state onto the server.
but those are just thoughts, maybe someone with a more opinionated view would be of better help here.