我们已经在使用基于cookie的会话,并且不能选择将它们关闭到文件存储会话。但是,我需要一种方法来存储更大量的会话数据(最多10MG左右) - 超出了cookie会话的限制,即使它不是,也不会绕过多个请求的大量数据会很慢。
我目前正试图通过使用(滥用?)Rails.cache
来解决这个问题。基本设置如下:
我发布到一个路线,其中包含以下代码:
# calculate some results...
Rails.cache.write('search_results' + session.id), search_results)
redirect_to '/results'
在GET /results
内,我读取了缓存的数据并将其发送到客户端:
@results = Rails.cache.read('search_results' + session.id)
这很好用。但是,如果我随后向GET /results2
之类的其他路线发出请求也调用Rails.cache.read('search_results' + session.id)
,则会返回nil
。即使所有呼叫都在5到10秒的范围内发生。
所以我的问题是:
Rails.cache
何时清理自己?答案 0 :(得分:0)
回答你的问题:
文件缓存存储的问题是它在本地存储文件。因此,如果您有多个服务器,则可以将缓存写入一个服务器,而在另一个将返回“nil”的服务器上读取缓存。解决方案是使用可以在多个服务器之间共享的缓存存储。
使用redis-store可能是一个解决方案:https://github.com/redis-store/redis-rails