【问题标题】:rails caching + ajaxrails缓存+ajax
【发布时间】:2011-08-04 00:15:30
【问题描述】:

我有一个显示用户帖子的 Rails 应用。用户帖子可以通过多种方式进行排序、分页、分类等。我通过 ajax 完成所有这些点击。

但是,每次我单击类别或排序参数或新页面时,它都会再次加载整个请求,然后以指定的方式返回它。有什么方法可以缓存我的第一个结果,然后快速排序、分页、分类?

【问题讨论】:

  • 您的视图和控制器是什么样的?我想如果我们看到这些,你会更快得到答案。另外,“整个”请求是什么意思?是 SQL 执行了一个低效的查询还是只是一个页面渲染?
  • 我们为我们的客户提供先进的匹配技术,这些技术基于很多标准,包括位置、行业、他们的个人资料中设置的特定偏好等,我们还执行一个算法来为每场比赛打分。每次加载新参数时,它都会执行所有这些操作(例如,?page=2 它会重新执行所有操作)。基本上,所有查询都发生在控制器中,而评分发生在模型中。
  • 那么您阅读过 Rails 缓存指南吗? guides.rubyonrails.org/caching_with_rails.html 看来您可以缓存一些 SQL 以及构成页面的片段。
  • 似乎我有缓存工作,但是,现在我无法摆脱它。我保存了一个旧视图,它不会在我的控制器或视图中加载任何更改。我怎样才能清除这个或强制到期?
  • 如果您使用的是 memcached,过期将起作用。 Newrelic 有一些关于 Rails 缓存的视频。

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

为了提升性能,更好的方法是使用memcache。如果您在 Rails 应用程序中安装并实现了 memcache,您可以将该查询缓存一段时间,而无需再次实际查询数据库,而是再次直接从内存中获取,从而大大提高了性能。您可能想查看https://github.com/nkallen/cache-money

【讨论】:

  • 如何缓存查询并缓存对该查询的许多操作?这可能吗?
【解决方案2】:

这是一个使用 AJAX 与非 AJAX javascript 实现的问题。

使用 Ajax 时,您应该问自己的问题是,此操作是否需要来自服务器的更多信息或逻辑?如果答案是否定的,并且您可以仅使用已在客户端浏览器上加载的信息来执行此操作,则应尝试使用 Javascript 来实现它。

在这种情况下,有很多用于 javascript 排序的解决方案。例如,如果您想要一个简单的类似表格的排序(您的表格可能是不可见的),您可以使用类似这样的插件:http://yoast.com/articles/sortable-table/

如果您正在寻找更自定义的解决方案,您可以手动编写 javascript,这篇文章:Sort <div> elements using jQuery 提供了一个很好的起点。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2010-11-22
    • 2010-10-13
    相关资源
    最近更新 更多