【问题标题】:What happens when Rails.cache.fetch expiresRails.cache.fetch 过期时会发生什么
【发布时间】:2016-03-12 15:30:40
【问题描述】:

我正在生成包含 65,000 个用户的 json 来填充预先输入的内容。查询很快,结果证明构建 json 是瓶颈。我正在尝试缓存结果,但是当缓存过期时会发生什么,它会自动重建它还是会等到有人触发调用,从而导致每 12 小时加载一次 9 秒的页面?

def user_json
  Rails.cache.fetch("users", expires_in: 12.hours) do
    User.all.to_json
  end
end

【问题讨论】:

    标签: ruby-on-rails json caching


    【解决方案1】:

    如果您不想每次都访问数据库,那么您可以考虑弹性搜索或 sphinx 等解决方案,这些解决方案旨在执行您所描述的快速搜索。

    今天早上我在听 javascript jabber,他们说现在平均网页小于 2mb,包括图像和 CSS。你的要求是这个大小的两倍。虽然这对北美人来说很好,但您的页面在澳大利亚等互联网落后地区可能会感觉慢得多。

    还值得注意的是,IE 等较旧的浏览器不能很好地处理 javascript 中的迭代。我建议您的应用程序在任何 IE 9 之前的版本中都会崩溃。

    由于这些原因,我会避免将包含 65,000 行的 JSON 通过网络推送到浏览器中。如果查询很快,为什么不每次用户更改输入时返回服务器。根据输入返回服务器的许多行程将比发送所有 65,000 条记录更快,并且在此过程中消除了我上面描述的整个问题。由于您不再需要缓存任何响应,因此您最初的问题也消失了。

    【讨论】:

    • 我明白你在说什么,只是 Angular 的模糊过滤器速度非常快,即使对于 65k 记录也是如此。整个 json 对象只有 2mb 左右,这对于一个对象来说是巨大的,但仍然 - 过滤会立即发生。
    • 很公平。我已经扩展了我的答案以解决其中一些问题。
    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2019-02-04
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多