Я сталкивался с той же проблемой, пока не нашел способ реализовать отложенную загрузку для всех iframes и изображений с помощью:
После этого я инициализирую lazyload.js и выполню несколько js.
Полный пример и код вы можете найти в репозитории MODX-lazy-loader-snippet
Если вам нужна помощь, оставьте комментарий к этому ответу, и я отвечу
Принятие Вашей аутентификации пользователя является так или иначе базирующейся сессией, затем ответ на все Ваши "неожиданные" случаи (который на самом деле будет нормой - люди редко, кажется, выходят из веб-приложений), будет то, что те пользовательские слоты становятся свободными, когда сессия испытывает таймаут. Таким образом, необходимо было бы исследовать шаблоны использования приложения. Если Вы получаете много людей, входящих в систему в течение нескольких минут, но не больше, чем что, то 30-минутная сессия испытывает таймаут, означал бы, очень немного людей на самом деле добираются для использования приложения.
Фундаментальная проблема состоит в том, что веб-приложения по сути разъединяются, таким образом, Вы не можете контролировать то, что пользователь на самом деле делает между запросами на страницу. Обычно, Вы продали бы лицензии на такое приложение для определенных пользователей (поэтому, если бы компания покупает 20 лицензий, которые дали бы им 20 имен пользователя и паролей). Затем Вы могли, конечно, предотвратить несколько входов в систему тем же именем пользователя и паролем, или отказом от второго входа в систему или деактивацией предыдущей (который является, вероятно, лучшим подходом в случае, если кто-то действительно переместился от одной машины до другого, не выходя из системы по одной из причин, Вы обрисовываете в общих чертах).
Наиболее распространенное решение состоит в том, чтобы иметь таймер действия. Можно предположить, что активный пользователь выполнит по крайней мере один запрос в "X", количество времени - говорит 5 минут или около этого.
Можно осуществить это путем помещения ajax-стиля, асинхронный запрос выключил таймер, который запускается, когда страница загружается. Например, если your'e, предполагающий, что все активные пользователи будут выполнять по крайней мере 1 запрос каждые 5 минут, затем каждая страница, запросит пустое (но без кэшей) страница каждые 4 минуты. Тот путь, пока у них есть открытое окно браузера, у Вас всегда будет действие от того пользователя. Снова, это обрабатывается асинхронными запросами, не любым видом директивы перезагрузки. Это делает это абсолютно очевидным для пользователя.
Как добавленная премия, посмотрите, можно ли сделать это, ajax запрашивают выпадающий немного полезной информации, вместо того, чтобы просто осуществить лицензирование ограничений.
Поскольку David указывает, что основная проблема состоит в том, чтобы дифференцироваться между неактивными пользователями и пользователями, которые оставили Ваше приложение.
Возможное решение состояло бы в том, чтобы сохранить низкий тайм-аут сессии (скажите 1 или 2 минуты), и использование функции обратного вызова для поддержания сессии для неактивных пользователей. Затем Вы могли увеличить счетчик в Session_Start и постепенно уменьшить его в Session_End и использовать его для отслеживания количество активных сессий. Если бы количество активных сессий идет вне Вашего предела, Вы перенаправили бы нового пользователя к странице, которая отказывается от сессии и говорит пользователю, что у Вас есть слишком много посетителей в данный момент.