ユーザーがファイルをアップロードして、インターネット経由で他の人と共有できる Web アプリケーションがあります。アクセスできる人は誰でもファイルをダウンロードできますが、アップロードした人がファイルを他の人と具体的に共有していない場合、その人はファイルをダウンロードできません。
ユーザー権限は Rails によって制御されるため、誰かがファイルをダウンロードしようとするたびに、Rails プロセスからユーザーに送信されます。これは深刻なボトルネックです。レールはファイルのアップロードとアクセス許可に必要ですが、他のユーザーがファイルをダウンロードするためだけにメモリを消費することはありません。
フロントエンド、データベース、およびファイル サーバー用にアプリケーションを別のサーバーに分割したいと考えています。ユーザーが私のサイトにアクセスする場合、レールを介して実行するのではなく、my-fileserver.domain.com/file/38183 などから直接ファイルをダウンロードできる必要があります。
これに最適なオプションは何ですか? ファイル システムではなく、データベース レベルでファイル アクセスを制御したいのですが、このような単純なプロセスのためにシステム上のすべてのメモリをレールに占有させたくありません。何か案は?
編集:私ができることの1つは、mysqlからnode.jsアプリにファイル/権限のリストをロードし、ファイルサーバーが送信するものに基づいてtrue / false応答としてファイルサーバーへのアクセス権を与えることです。これただし、ファイル サーバーで Web サーバーを実行する必要があります。