




Один из способов сделать это - написать функцию JS, которая срабатывает с некоторым интервалом. Эта функция будет выполнять асинхронный вызов (AJAX) к серверу, чтобы поддерживать сеанс в рабочем состоянии. Таким образом, сеанс не истечет. Это один из известных мне способов, который я видел в практике.
Если вы продлеваете сеанс после его истечения, а когда он истекает, вы продлеваете его, то на самом деле вы вообще не имеете срока действия.
Почему бы просто не продлить период сеанса за пределы 20 минут? Это условно?
Не совсем. По крайней мере, не после истечения срока действия.
Самая распространенная из тех, что я видел, - это периодическая отправка Ajax-запроса "PING". Просто что-то для доступа к серверу и перезапуска счетчика тайм-аута для сеанса.
Джефф писал об этом некоторое время назад.
Некоторое время назад у меня был аналогичная проблема, и я нашел эта статья очень полезным - по крайней мере, в преодолении части проблемы.
Я также добавил следующую строку на страницу дефрибутора, чтобы предотвратить кеширование, и она отлично работает для нас.
По сути, он выполняет невидимую обратную передачу (обновление сеанса) незадолго до истечения срока его действия - на самом деле мы делаем это немного раньше.
Надеюсь, это поможет, но я могу откопать часть кода, который использовал, если вы хотите взглянуть.