[英]Rails: Set a common or global instance variable across several controller actions
[英]Rails - save controller instance variable data across HTTP request
在我的项目中,用户正在上载需要阅读的文本文件。
文件,可以是任何大小,我正在使用的文件为1 MB,大约有1500行。 文件也可以更大。 因此,我考虑将文件处理并将数据保留在实例变量中,而不是将其全部放入db中。
但是实例变量在HTTP请求中不可用。 因此,我可以使用哪些选项来保留HTTP请求中的实例变量值 。不选择DB的另一个原因是,我不需要将数据持久化。 只要用户登录,就只需要在该时间段内显示数据。 用户注销后,我可以丢弃数据。
如果您需要更多信息,请告诉我。
正如@xyious建议的那样,我要避免在会话中存储大量数据,这不是一个好习惯。 但是,您可以执行以下操作:
SecureRandom.hex
),并将该文件存储在第1点提到的路径中 我建议不要这样做,但是您可以将数据存储在会话变量或cookie中。
为什么在用户登录时需要存储那么多数据? 是否可以只保存重要的位?
使用实例变量存储内容不是正确的方法,因为您对上传的文件大小没有限制,并且最终每次都会传递数据。
首先,确定大小限制,因为您希望用户收到文本文件,然后使用DB中的参考路径临时上传文件。 可以在需要时清除此文件,并使访问内容更简单。 为了进一步改善这一点,请启用缓存机制并为上传的文件设置缓存服务器。
如果您对此不满意,那么我可以想到的其他选择是使用已经建议的会话变量。 因此,此数据将在每个会话中保留,这符合您的要求。 您可以session[:file_Data] = "put parsed content here"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.