很明显,当用户登录时,控制器会从数据库中提取用户的信息。在整个用户会话中,加载某些页面(例如他们的配置文件/设置/帖子)需要每次他或她想要查看它们时(通过每个控制器操作的用户实例变量)我的应用程序设置方式进行数据库查询。
我的问题是,有没有办法查询所有这些信息,以便所有视图/控制器全局访问,这样当用户去查看他们的信息时,不必每次都查询把更多的负担放在数据库上?
长话短说,我担心我的应用程序的可扩展性,这里的任何建议都会非常有用。
感谢。
答案 0 :(得分:1)
加载某些页面,例如他们的个人资料/设置/帖子,每次他或她想要查看时都需要数据库查询
是的,这很明显。每次他请求哪个将由Web服务器单独处理
有没有办法查询所有这些信息,以便所有视图/控制器全局访问
基本上,我们可以,但这不是一个好的做法,可以提高性能:
答案 1 :(得分:1)
所有视图/控制器一次全局访问的信息
这是"云计算"无论Redmond或Redwood Shores的人告诉你什么,现在都不存在。
Rails建立在HTTP protocol上,stateless - 每次提交请求时,服务器都会忘记"你曾经存在过。
您提出的问题基本上是有状态应用程序的工作原理,我们在当前设置中没有这样做。有状态的一个很好的例子是DataTable
或ssh
。
不幸的是,在Rails应用程序的范围内,没有简单的方法可以实现您想要的目标。
每次发送请求时,都会处理客户端session数据以构建数据对象,例如ftp
,current_user
等。除非您调用应用程序的多个实例(对于每个用户而言,您必须为所有记录(缓存)创建某种永久数据存储。
是解决方法:
posts
等)-
如果你愿意,我可以解释每一个,我不喜欢大量的帖子,但它可能会给你一些想法。如果你发表评论,我会在必要时写一个更新。