2

我目前正在使用 Shrine 将文件上传到 DigitalOcean(通过 s3 sdk)。它工作得很好,很完美。但是,在指南中有一个存储选项来制作上传的临时副本,由“缓存”前缀指定。

这个缓存是如何使用的?或者,换句话说,它提供了哪些功能?

由于我完全不知道它的用途,目前我所看到的只是我在我的空间(存储桶)资源中上传的副本。这些文件是否被处理掉了?

最后,如果缓存文件是用于数据检索的目的,那么制作本地缓存而不是将其发送到 S3 资源是否有意义?

如果所有这些都是常识,我很抱歉,当我急于实施它时,我似乎并不清楚。

4

2 回答 2

3

Shrine 的临时存储主要用于防止孤立文件(未附加到任何记录的文件)进入您的主存储。如果出现验证错误,或者用户决定在文件异步上传到存储后不保存表单,上传的文件可能最终不会附加。

因为 Shrine 上传的文件默认没有数据库记录支持(就像 Active Storage 一样),临时存储还提供了一种安全措施,可以防止用户劫持其他用户的文件。如果只使用主存储,攻击者可以从另一个文件的 URL 中猜测上传的文件 ID,并在创建记录时以他们的形式分配它。之后他们可以删除记录,属于其他用户的文件将被删除。

Shrine 建议使用云存储作为临时存储,以便从浏览器直接上传到云存储,而且如果您将应用程序托管在多台服务器上,磁盘存储将不起作用,因为只有一台服务器可以访问保存的文件。请注意,如果您愿意,您仍然可以使用磁盘进行临时存储,只需更改:cache声明即可。

于 2020-05-19T14:21:49.290 回答
2

Shrine 使用缓存在后台移动缓慢的处理动作。您可以指定一些快速缓存操作,然后在后台进行大量处理。这正在改善上传文件的用户副作用。另外 Shrine 不会删除临时文件,您需要在后台自己销毁它

于 2020-05-11T14:41:12.930 回答