3

在我的 Rails 应用程序中,我需要在每个页面加载时查询一个二进制文件数据库。查询是只读的。文件大小为 1.4 MB。我有两个问题:

File1)将对象缓存在类变量中是否有意义?

def some_controller_action    
    @@file ||= File.open(filename, 'rb')
    # binary search in @@file
end

2)缓存的对象会在同一个rails进程中的不同请求之间共享吗?

4

2 回答 2

5

如果您在课堂上使用常量,也就是

FILE = File.read(filename, 'rb').read

因此它会在应用程序加载时进行评估。分叉将在之后发生,因此它将在共享内存中。

于 2012-06-04T10:07:09.803 回答
2

这确实有道理。但是,这样做的限制是,如果您为应用程序生成多个进程,则每个进程都必须缓存 1.4 MB。所以第二个问题的答案是肯定的,但它不会在多个进程之间共享。

于 2012-06-04T09:39:43.243 回答