我有一个网络应用程序,允许用户上传文件并与互联网上的其他人分享。有权访问的任何人都可以下载文件,但如果上传者没有与其他人明确共享该文件,则该人无法下载文件。
由于用户权限由rails控制,因此每次有人尝试下载从rails进程发送给用户的文件。这是一个严肃的瓶颈 - 文件上传和权限需要rails,但它不应该只占用内存以供其他人下载文件。
我想将应用程序拆分到前端,数据库和文件服务器的不同服务器上。如果用户访问我的网站,他们应该能够直接从my-fileserver.domain.com/file/38183下载文件,而不是通过rails运行。
这个的最佳选择是什么?我想控制数据库级别的文件访问,而不是文件系统 - 但我不希望rails占用我系统上的所有内存来进行这么简单的过程。有任何想法吗?
编辑: 我可以做的一件事是将mysql中的文件/权限列表加载到node.js应用程序中,并根据文件服务器发送的内容将文件服务器的访问权限作为真/假响应。这仍然需要但是,运行Web服务器的文件服务器。
答案 0 :(得分:0)
可能是你可以为文件生成一个rand url,并由中心系统控制。