gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:31 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com