Rails 如何 cache 一个变量的内容?

bwlinux · 2014年06月17日 · 最后由 huacnlee 回复于 2014年06月17日 · 2564 次阅读

再问大家一个问题。 大家用 S3 的客户端加密吗?就是加密解密都是在客户端进行。使用这个方法后,如果在 rails app server 缓存解密的文件,这样就不需要每次客户端都要读取在 S3 上的加密的文件,然后解密,这个过程的费时费力,有什么方法把这个解密的文件缓存下来,加快读取速度,谢谢。

你能换个头像吗?这里是 ruby 社区

#1 楼 @xiongxin8802 显然没有问题的。换了。估计要等个 10-20 分钟。

Rails.cache.write .read 用过没? 看不太明白的你场景,你可以用代码举一下你的本来是怎么弄的。

原来的头像是什么啊?

话说@xiongxin8802 的建议也太烂了,难道 Ruby 社区就要人人用珠宝头像?

#6 楼 @billy 你好像理解反了?

@huacnlee 不是的。貌似楼主以前是用的 Python 图标做头像所以一楼才说的。

#4 楼 @huacnlee 场景是这样。 file-->encryption->S3->decryption->file->send to requesters S3 有两种加密方法,S3 服务器端,自动加密和解密,这个是在发往 S3 的 header 里边,有个参数就好。另外一个方式,是客户端加密,可以用对称加密,或者非对称加密方法。就是客户端,提供一个密匙,在这个这个文件上传到 S3 前,这个文件会被先加密,然后储存在 S3 端,从 S3 读取的时候,客户端会提供密匙,然后这个文件会被解密,客户端得到解密后的文件。这个加密,解密过程是 AWS-SDK 自动完成的。 原理和示例,看这个代码的 137-164 行: https://github.com/aws/aws-sdk-ruby/blob/fc7c617199ec69a134cf324c01012f6929c87f84/lib/aws/s3/s3_object.rb 官方的例子: http://ruby.awsblog.com/post/Tx1OFBULXYZNVTH/Using-Client-Side-Encryption-for-S3-in-the-AWS-SDK-for-Ruby

我现在就是用类似例子的方法,在 rails 里边,每次有客户要下载这个文件,web server 就读取这个上传的 file 的 S3 路径,这个文件就解密了,保存在一个变量里边(如何 cache 这个变量的内容,这个是我想问的),然后用 send_data 把解密后的文件内容发往请求者。因为每次解密都是要去 S3 下载解密,所以我就想怎么把这个解密后的文件给缓存起来。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号