- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 Shrine 将文件上传到 DigitalOcean(通过 s3 sdk)。它工作得很好,很完美。但是,在指南中有一个存储选项,用于制作上传的临时副本,由“缓存”前缀指定。
这个缓存是如何使用的?或者,换句话说,它提供了哪些功能?
由于我完全不知道它的用途,目前我所看到的只是我在空间(存储桶)资源中上传的副本。这些文件曾经被处理过吗?
最后,如果缓存文件用于数据检索目的,那么制作本地缓存而不是将其发送到 S3 资源是否有意义?
如果所有这些都是常识,我深表歉意,因为我急于实现它,所以我似乎不太清楚。
最佳答案
Shrine 的临时存储主要用于防止孤立文件(未附加到任何记录的文件)进入您的主存储。如果出现验证错误,或者如果用户决定在文件异步上传到存储后不保存表单,上传的文件可能不会最终附加。
由于 Shrine 的上传文件默认情况下没有数据库记录支持(与 Active Storage 一样),因此临时存储还提供了一种安全措施,可以防止用户劫持其他用户的文件。如果只使用主存储,攻击者可以从另一个文件的URL中猜测上传的文件ID,并在创建记录时分配到他们的表单中。之后他们可以删除记录,属于其他用户的文件将被删除。
Shrine 建议使用云存储作为临时存储,以便可以直接从浏览器上传到云存储,而且如果您将应用程序托管在多台服务器上,磁盘存储将不起作用,因为只有一台服务器可以访问到保存的文件。请注意,如果需要,您仍然可以使用磁盘进行临时存储,只需更改 :cache
声明即可。
关于ruby-on-rails - 神社的新手。缓存有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61729741/
Jinja 有没有办法检查一个变量是否可迭代?我正在使用 Django 并决定我是使用 objects.filter 还是 objects.get response 发送到 jinja 模板是可以的是
我需要生成一个随机的 128 位数字并获取它的二进制表示形式,b64 编码。 示例: vagrant@ubuntu1804:~$ consul keygen TUlzi8BWwPQR1zyjR1TiA
我有一个模板parent.tpl: {% set myvar = 'AAA' %} {% block par %} {{ myvar }} {% endblock %} 和一个child.tpl {%
我正在尝试在神社中创建以下循环: variable: > [ {% for replaceme in list %} { 'name': "{{ "string-{{r
我有一个 Flask 端点函数,它传递每个用户的评分、正分和负分字典,如下所示: leaderDict = { 'users': { '': { 'ra
在 Flask 应用程序中有两个文件: base.html Title {% marker "content" %} upload.html,它扩
我正在使用 Flask,我有一个 WTF 表单,其中包含 12 个输入字段,名称为 sold_1、sold_2、...、sold_12。 我想使用如下循环在 Jinja 中生成这些字段: {% for
我是一名优秀的程序员,十分优秀!