2

在阅读了 Rails 如何处理图像资产之后,我感到很困惑,并且无法决定将上传的图像保存在我的应用程序目录树中的哪个位置。如果用户已将图像上传到我的 rails 应用程序,我应该将 image_save_path 设为 /assets/images/ 还是 /public/images ?

我的担忧/问题:如果我想允许用户在他们选择这样做时公开他们的图像,是否应该考虑上传“未发布”的图像(仅当 current_user == image.owner 时才提供图像)如果它位于资产/图像而不是公共/图像中,则受保护?同等保护?以某种方式受到较少保护?

我是否正确地假设使用资产管道的图像的好处只是文件名在生产模式下得到散列,就是这样?就资源的服务方式而言,这里是否存在一些隐含的额外或减少的安全性?这更像是一个微妙的意见问题,还是 Rails 公约在这里有话要说?

谢谢!

EDIT1:您将如何处理您希望上传用户可以使用但访客或其他用户无法发现的上传内容?应该(可以?)一家商店在 web_root 下的树外上传内容吗?

4

1 回答 1

0

应用程序资产是属于您的应用程序一部分的那些资产,例如背景和图标(在图像的情况下)。资产管道与用户上传的图像无关。我建议将它们分开,如果需要,从单独的 CDN 为它们提供服务。

资产管道中文件名的散列仅在资产编译期间完成,因此指向特定图像的链接对于图像内容是唯一的。这有助于避免为图像和其他资产设置复杂的缓存标头,因为当图像更改时,文件名也会更改,并且根本不会使用缓存的版本。

所有这些都不适用于用户上传的图像,您不会为他们的图像即时编译资产。

于 2012-10-31T16:41:42.623 回答