|
|
1
8
正确答案 :memcached。快速、干净、支持多流程、集成 非常 这些天来,他们用铁轨把自己弄得干干净净。设置起来也没那么糟糕,但继续运行是另外一件事。 90%答案 :可能有多个Rails进程在运行——例如,每个Mongrel进程一个。根据缓存需求的具体情况,很可能每个混血儿有一个缓存并不是世界上最糟糕的事情。例如,假设您正在缓存一个长时间运行的查询的结果
然后用一行代码就可以将20000个请求减少到12个
当您在大约15秒内从每天20k的计算量下降到12次后(好吧,两分钟——您需要将其封装在一个简单的if块中,该块将缓存更新时间存储在另一个全局中),您可能会发现无需花费额外的工程资源将其降至每天4次。 实际上,我在我的一个生产站点中使用它来缓存一些昂贵的查询,这些查询实际上只需要在流程生命周期中评估一次(也就是说,它们只在部署时更改——我想我可以预先计算结果并将其写入磁盘或数据库,但为什么要这样做,因为SQL可以帮我完成这项工作)。
|
|
|
2
3
您应该看看memcached: http://wiki.rubyonrails.org/rails/pages/MemCached |
|
|
3
2
有一个有用的方法 Railscast on Rails 2.1 caching . 如果您计划将memcached与Rails一起使用,这将非常有用。 |
|
|
4
1
|
|
|
5
0
@p3t0r是正确的,MemCached可能是最好的选择,但是您也可以使用Rails附带的sqlite数据库。不过,这在多台机器上不起作用,而MemCached会起作用。此外,sqlite将持久保存到磁盘,尽管我认为您可以将其设置为不保存。Rails本身没有应用程序范围的存储,因为它作为每个请求处理程序的一个进程运行,所以它没有ASP.NET或Java服务器那样的共享内存空间。 |
|
|
6
0
因此,由于Rails的设计方式,您所要求的在Rails中是完全不可能的。您需要的是一个共享对象,Rails是严格的单线程。Memcached或用于在分布式进程之间共享数据的类似工具是唯一的出路。 |
|
|
7
0
Rails.cache冻结它存储的对象。这种方法对于缓存有意义,但对于应用程序上下文没有意义。我想你所要做的就是在config/environment.rb中创建一个常量,而不是往返于月球完成这个简单的任务
很简单啊?? |
|
cluster1 · 采取独立的新行动的好处是什么? 1 年前 |
|
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 1 年前 |
|
|
Fred Willmore · Rails控制器不呈现任何模板 2 年前 |
|
|
Diogo Amaral · 实现API请求的正确方式 2 年前 |
|
|
Meknassih · 在控制器方法中分配给模型没有任何作用 2 年前 |
|
|
Michael Ding · Rails上的默认会话到期问题 2 年前 |
|
|
Flávio · 基于另外两个生成数组 2 年前 |