【发布时间】:2011-03-24 15:43:31
【问题描述】:
我有一个 cfc 来处理用户对象。我的问题是:在会话中只存储 user_id 并在每个请求中重新创建用户对象是否更好?还是将整个用户对象存储在会话中更好?
以下是我的想法:
-
如果我将整个对象存储在会话中:
- 可能会减少处理器开销
- 可能会有更多的内存开销
- 所有方法/函数都存储在实际对象中,除非用户注销并重新登录,否则我在 cfc 中更新的新函数将不可用,或者如果我设计了某种方法使其自行刷新。李>
- 如果我通过并发 ajax 调用弄乱对象,则可能存在互斥锁或锁定问题
-
如果我只在会话中存储 user_id:
- 我必须为每个页面请求创建用户对象(可能会增加处理器开销)
- 内存开销可能会减少
- 不会出现互斥/锁定/竞争条件,因为每个请求都有自己的用户对象副本
- 对 CFC 模型本身的更新将立即在整个系统中被识别,用户不必注销并重新登录
这种事情有正常的做法吗?我是不是想多了?
【问题讨论】:
-
这取决于...如果您使用 ORM,请查看用户 cfc 的二级缓存。
-
@sam-farmer 使用继承自 user.cfc 的本土 ORM。我假设你在谈论 CF9 的内置 ORM,对吧?
标签: session coldfusion