我在usercontrol中有一个位于aspx页面的Telerik菜单,我需要根据登录用户生成菜单。
所以我需要将数据源绑定到菜单。 我的网站每天将有超过1000个用户。 为防止往返请求,我从会话中生成菜单 我为此目的使用InProc会话,并将Sql数据保存在会话中。
菜单的会话对象大小约为40个字节。所以(1000个用户)*(40个字节)=大约40K服务器的内存。 我没有任何其他服务器用于使用StateServer Session。 而且我也会将会话用于其他目的。
是否有更好的解决方案,因为性能对我的场景起着关键作用。 或者我已经选择了最佳解决方案?
答案 0 :(得分:1)
看起来已经是一个非常好的解决方案,假设会话超时不是问题。
答案 1 :(得分:1)
这听起来不像你这样做会有任何问题,但你可能对my answer to this question感兴趣。
一般来说,会话是缓存数据的好地方:
听起来你至少符合上面的前两个要求。
我工作的一个项目有一个类似于你所描述的项目,但很多用户最终会得到完全相同的菜单,而菜单本身的生成也很昂贵,所以我将问题分成几部分,像这样:
这两个存储库使用滑动内存缓存,因此在大多数情况下,菜单键和菜单本身都已构建。如果新用户登录,但应该看到与其他最近用户相同的菜单项,则第一个存储库需要构建其菜单键,但实际菜单已经缓存。
我不知道这种方法对你来说是否有意义,但它确实是值得的。