神社新手。缓存有啥用?
Posted
技术标签:
【中文标题】神社新手。缓存有啥用?【英文标题】:New to Shrine. What is the use of the cache?神社新手。缓存有什么用? 【发布时间】:2020-08-26 23:54:47 【问题描述】:我目前正在使用 Shrine 将文件上传到 DigitalOcean(通过 s3 sdk)。它工作得很好,很完美。但是,在指南中有一个存储选项来制作上传的临时副本,由“缓存”前缀指定。
这个缓存是如何使用的?或者,换句话说,它提供了哪些功能?
由于我完全不知道它的用途,目前我看到的只是我在空间(存储桶)资源中上传的重复内容。这些文件是否被处理掉了?
最后,如果缓存文件是用于数据检索的目的,那么做一个本地缓存而不是将其发送到 S3 资源是否有意义?
如果所有这些都是常识,我深表歉意,因为我急于实施,所以我似乎并不清楚。
【问题讨论】:
【参考方案1】:Shrine 的临时存储主要用于防止孤立文件(未附加到任何记录的文件)进入您的主存储。如果出现验证错误,或者用户决定在文件异步上传到存储后不保存表单,上传的文件可能最终不会附加。
由于默认情况下 Shrine 上传的文件没有数据库记录支持(与 Active Storage 一样),临时存储还提供了一种安全措施,可以防止用户劫持其他用户的文件。如果只使用主存储,攻击者可以从另一个文件的 URL 中猜出上传的文件 ID,并在创建记录时以他们的形式分配它。之后他们可以删除记录,属于其他用户的文件将被删除。
Shrine 建议使用云存储作为临时存储,以便从浏览器直接上传到云存储,而且如果您将应用托管在多台服务器上,磁盘存储将不起作用,因为只有一台服务器可以访问到保存的文件。请注意,如果您愿意,您仍然可以使用磁盘进行临时存储,只需更改 :cache
声明即可。
【讨论】:
【参考方案2】:Shrine 使用缓存在后台移动缓慢的处理动作。您可以指定一些快速缓存操作,然后在后台进行大量处理。这正在改善上传文件的用户副作用。另外Shrine不会删除临时文件,需要你自己在background销毁
【讨论】:
以上是关于神社新手。缓存有啥用?的主要内容,如果未能解决你的问题,请参考以下文章