在我网站上每个页面的一侧,我列出了该部分中的其他页面。我还标记用户是否访问过或完成了每个页面。每次页面加载时,Rails都必须检查数据库以查看用户是否访问或完成了部分中的每个页面,这使得显示页面的时间更长。有没有办法可以加快速度呢?
示例:用户访问第2页和侧边栏加载。然后,他访问了第3页,侧边栏再次加载,但可能在第2页旁边有不同的标记。
Page 2 ------ - ✓ page 1 | Main Content - > page 2 | The quick brown fox... - page 3 | ...
答案 0 :(得分:1)
在数据库查找和渲染方面,您可以在一些方面提高性能。
对于渲染,您应该查看fragment cacheing侧边栏中的访问链接,尽管您的方案在跟踪应用中的访问链接方面有点不同寻常。
对于侧栏中的每个链接,您可以保存代表已访问和未访问的片段,然后外部容器可以表示已访问和未访问的任何排列,因为显示它时它与哪个用户无关。对于每种情况,你最终会得到很多不同的侧栏。
对于数据库,您可以查看identity_cache之类的内容,并在缓存中保存用户页面访问列表,以避免不必要的查找,在他们点击新页面时失效。
对于Rails和一般的加速这样一个广泛的问题,这是我能得到的,这似乎是问题所在。通过使用不同的缓存后端和服务器,您还可以获得许多其他平台特定的加速。
答案 1 :(得分:0)
我假设您正在跟踪他们在数据库表中访问和/或完成的页面,因为这些数据需要保持有状态。
如果是这样,首先请确保您的表格在需要查找的列上正确编入索引。
然后,将结果缓存在一个会话变量中,以便您可以从那里检索它,并且只在必要时转到数据库(例如某些内容会改变状态或某段时间过去)