私はCMSを開発していますが、ユーザーが自分の画像やCSSファイルなどをアップロードできるようにしたいと考えています。リソースの安全のために、アップロードされたファイルをアプリケーション構造/デプロイされたWAR内に保存したくありません。
グレイル以外の場所のコントローラーから、グレイルでコンテンツを提供する最も簡単な方法は何ですか?
彼の投稿でcdavis226によって説明されているように、リモートファイルシステムフォルダを指すコンテキストエイリアスを追加します。
このソリューションは、GrailsのデフォルトのTomcatサーバーを使用している場合に機能します。
適切なツールを介して静的コンテンツを提供することは正しい方法であり、すべてのWebサーバーはこれを実現する可能性を提供します。Grailsアプリケーションでこのコンテンツの管理を実装する場合は、静的コンテンツの宛先をConfig.groovyで構成可能にするだけです。
コントローラを介したファイルシステムからのコンテンツのロードを実装しないでください。車輪の再発明を行っています;-)また、Webサーバーのパフォーマンスははるかに優れています;-)
多くの調査と質問を行った後、静的リソース(画像など)をデータベースにパッケージ化することにしました。これの利点は次のとおりです。
欠点は次のとおりです。
これらの欠点はありますが、私は解決策を採用することにしました。これが私がそれらに対処した方法です:
私はSmartBrowserCachingを使用しており、etags(ドキュメント)を使用し、EHCache(ドキュメント)を使用して画像サーバー側をキャッシュしています。新しい画像がアップロードされるとすぐに、eタグが変更され、キャッシュがクリアされ、ブラウザに新しいコピーをダウンロードするように強制されます。
これまでのところ、MySQLデータベースからのパフォーマンスの低下は目立たず、パフォーマンスは非常に高速です。