如何优化Rails中页面的重复查询?

时间:2013-12-26 21:32:11

标签: ruby-on-rails ruby-on-rails-3 postgresql caching ruby-on-rails-3.2

在我网站上每个页面的一侧,我列出了该部分中的其他页面。我还标记用户是否访问过或完成了每个页面。每次页面加载时,Rails都必须检查数据库以查看用户是否访问或完成了部分中的每个页面,这使得显示页面的时间更长。有没有办法可以加快速度呢?

示例:用户访问第2页和侧边栏加载。然后,他访问了第3页,侧边栏再次加载,但可能在第2页旁边有不同的标记。

                 Page 2
                 ------

- ✓ page 1     |     Main Content
- > page 2     |    The quick brown fox...
-   page 3     |
     ...

2 个答案:

答案 0 :(得分:1)

在数据库查找和渲染方面,您可以在一些方面提高性能。

对于渲染,您应该查看fragment cacheing侧边栏中的访问链接,尽管您的方案在跟踪应用中的访问链接方面有点不同寻常。

对于侧栏中的每个链接,您可以保存代表已访问和未访问的片段,然后外部容器可以表示已访问和未访问的任何排列,因为显示它时它与哪个用户无关。对于每种情况,你最终会得到很多不同的侧栏。

对于数据库,您可以查看identity_cache之类的内容,并在缓存中保存用户页面访问列表,以避免不必要的查找,在他们点击新页面时失效。

对于Rails和一般的加速这样一个广泛的问题,这是我能得到的,这似乎是问题所在。通过使用不同的缓存后端和服务器,您还可以获得许多其他平台特定的加速。

答案 1 :(得分:0)

我假设您正在跟踪他们在数据库表中访问和/或完成的页面,因为这些数据需要保持有状态。

如果是这样,首先请确保您的表格在需要查找的列上正确编入索引。

然后,将结果缓存在一个会话变量中,以便您可以从那里检索它,并且只在必要时转到数据库(例如某些内容会改变状态或某段时间过去)