Я полагаю, что вы можете устанавливать файлы cookie, записывать в хранилище HTML5 и т. Д. Но по соображениям безопасности и отказа в обслуживании вы не можете выполнять определенные действия, такие как запрос пользователя, установка window.location и т. Д.вещи, которые могут лишить пользователя возможности перейти на веб-страницу, к которой он обратился.
Как правило, не очень удачный выбор - держать явную блокировку на сервере, пока данный пользовательна веб-странице и ожидайте, что все пути с этой страницы позволят вам снять эту блокировку.Существуют методы без блокировки, которые можно использовать для предотвращения большинства проблем с обновлением.Один из довольно простых способов сделать это состоит в том, чтобы клиент извлекал начальное состояние данных и зависал на нем.Когда они хотят обновить данные, они повторно отправляют как исходные данные, так и новые данные.Когда сервер получает и старую, и новую, он может выполнить временную блокировку, получить текущие данные и проверить, соответствуют ли они старым данным, представленным клиентом.Если это так, то никто другой не изменил данные, пока пользователь их редактировал.Если старые данные и текущие данные не совпадают, тогда данные были изменены, пока пользователь редактировал.Если он был изменен, то это зависит от приложения, что делать - и стратегия может состоять из всего: от последнего выигрыша до записи, до объединения только измененных полей до отказа в записи, потому что базовые данные были изменены, и сообщая пользователючто им нужно посмотреть на новое состояние данных и повторно применить любые требуемые изменения.
Существуют другие подобные методы, включающие номера ID изменения или идентификаторы редакции вместо копии старых данных.