Сеансы сохраняются на ПОЛЬЗОВАТЕЛЯ, что означает, что даже если вы используете один и тот же ключ, все, что хранится в Сессии под тем же ключом, будет отличаться для каждого пользователя. Другими словами, пользователь A не может перезаписать данные для пользователя B.
Другая вещь - это Cache: Cache используется для всего приложения и может быть перезаписан одним пользователем другому. У кэша есть срок действия и другие функции, такие как автоматическое подключение к какому-либо событию, когда срок действия кэшированного объекта истекает, что позволяет автоматически обновлять его и т. Д.
В заключение: сессия на пользователя. Кэш распределяется между ВСЕМИ ПОЛЬЗОВАТЕЛЯМИ.
РЕДАКТИРОВАТЬ Обновление моего ответа для правильного решения вопроса telsokari:
Срок действия объектов сеанса не истекает до истечения срока действия самого сеанса. Нельзя сказать, чтобы сессия «истекала» один объект через определенное количество времени. Вы можете удалить их вручную, если это то, что вы хотите сделать. Просто подключитесь к любым событиям в приложении, таким как Begin_Request и End_Request.
Но я не понимаю, что вы беспокоитесь о сохранении объектов в сеансе до тех пор, пока пользователь не выйдет из системы или не истечет сеанс ... Если вы помещаете много данных в сеанс, то, возможно, вам не следует кэшировать эти данные в первое место. Если вы помещаете объекты контролируемого размера, то в чем проблема? Вопрос не должен быть «Когда я должен истечь этот объект в сеансе»? а точнее: «Имеет ли смысл хранить объект в сеансе, в кэше или нет вообще?» Ответ зависит исключительно от вашего конкретного случая, доступных аппаратных ресурсов (памяти) и т. Д. И т. Д.