在 Ruby On Rails 中的类变量中缓存文件

Evg*_*nii 3 ruby ruby-on-rails-3

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

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

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

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

Rea*_*onk 5

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

FILE = File.read(filename, 'rb').read
Run Code Online (Sandbox Code Playgroud)

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