ruby-on-rails - 如何清除缓存以便连续的随机查询返回不同的结果?

标签 ruby-on-rails ruby caching random

我想多次调用它并让它返回不同的结果,但是(我认为)缓存导致它一遍又一遍地返回相同的结果:

randomMatchups = Matchup.order("RANDOM()")

我尝试使用:

uncached do
    randomMatchups = Matchup.order("RANDOM()")
end

matchup.connection.clear_query_cache

ActiveRecord::Base.connection.clear_query_cache

到目前为止还没有运气。

请注意,此问题仅在生产环境(Heroku)中出现,在本地运行时不是问题。

有什么建议吗?

编辑:澄清一下,刷新页面时会得到不同的结果,但是当我通过 AJAX 请求到达 Controller 时,它不起作用。

最佳答案

我相信 uncached(模型上的一个类方法)应该像这样工作:

randomMatchups = Matchup.uncached do
  Matchup.order("RANDOM()")
end

http://api.rubyonrails.org/classes/ActiveRecord/QueryCache/ClassMethods.html#method-i-uncached

编辑:

我看到您对另一个可能的解决方案进行了编辑。您的浏览器很可能正在缓存响应。如果您使用的是 jQuery,请将缓存选项设置为 false。

$.ajax({
  url: "test.html",
  cache: false
})

jQuery 将添加一个带有时间戳“_={timestamp}”的 GET 参数,这会阻止浏览器缓存响应。

如果您不使用 jQuery,请寻找等效的解决方案或直接自己添加时间戳:

 <%= foo_path(timestamp: Time.now.to_f) %>

关于ruby-on-rails - 如何清除缓存以便连续的随机查询返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19417434/

相关文章:

javascript - 注销后如何在不使用浏览器缓存的情况下从服务器重新加载 Angular 应用程序

caching - 当接近磁盘限制时,Nginx 缓存管理器会清除文件吗?

ios - 删除 iOS 中的缓存。 cocoa 错误 513

ruby-on-rails - Rails分页重复项

ruby - Ruby 中按元素顺序对数组数组进行分组的最简单方法是什么?

php - CSS 在 chrome devtools 中工作,而不是在现场

ruby - 如何获取字符前后的所有单词?

ruby-on-rails - 使用 Passenger 和 Rails 应用程序启动 nginx 时如何访问 Rails 应用程序的控制台(stdout)?

ruby-on-rails - Rails 3 提交包含多条记录的表单

ruby-on-rails - "require File.expand_path(' ../../config/environment', __FILE__)"到底做什么?