Is there any reason you couldn't keep an offline copy of the environment in the browser by using http://bellard.org/jslinux/? It takes a while to boot, but if you saved the RAM to local storage then it should resume instantly.
You'd have to sync the state of the VM when they come online again, but that could be done efficiently from within the VM in a manner similar to dropbox syncing.
You'd have to sync the state of the VM when they come online again, but that could be done efficiently from within the VM in a manner similar to dropbox syncing.