我知道购物车项目等信息的一般共识是将它们存储在会话中.但是属于用户的对象可以被其他用户更改呢?比如说,像一个类似eBay的网站.如果您在会话中存储用户的"项目",其中包含当前的出价金额,而另一个用户进入并对该项目进行出价,则您必须同时更新数据库中的项目以及会话中的项目,不是吗?
在这种情况下,只有当其他用户采取的任何操作影响一个人的会话值或将所有内容存储在数据库中并且每次都检索它时,才会存储会话和刷新的唯一选项(例如,如果您显示出价,可能会变得昂贵在每页的侧面板上).
我会将它全部存储在数据库中并每次检索它.根据数据的易变性,几秒钟的缓存可能是有序的.最大的问题是保持两者一致.
我认为每次检索数据并不像您想象的那么昂贵.如果您基于密钥查找数据库,则数据库非常有效.我在简单性(存储在DB和检索)方面是错误的,直到性能问题出现在负载下(即在负载测试中).
如果只有少数几次,您可以使用应用程序缓存(除非您有多个工作进程/服务器)并确保数据库和缓存保持同步.