0

私のウェブホストはHerokuで、ファイルをローカルファイルシステムに保存することはできません。そのため、Carrierwaveを使用してファイルをAmazonS3に保存しています。

コンソールでは、次のことに気づきます。

Photo.last.attachment.url

それは戻ります:

 => "https://foobar.s3.amazonaws.com/uploads/users/1/photos/7/foo.jpg" 

予想通り。ただし、コンソールでのこのプロセス(値を返すプロセス)には2〜3秒かかります。私の推測では、S3にアクセスしようとしていると思います。さらに悪いことに、複数の写真を含むWebページをロードすると、ロードにかなりの時間がかかります。

S3を介してファイルをリモートで保存しているため、「Photo.last.attachment.url」から結果をキャッシュする必要があるとのことです。

つまり、私のデータベースには2つの列が必要です。

:attachmentおよび:attachment_url

:attachmentはCarrierwaveアップローダーオブジェクト用であり、:attachment_urlはS3ファイルへの直接リンクです。

これは私がすべきことですか?より良い代替案はありますか?

4

2 に答える 2

2

これは、Carrierwaveの最近のバージョンで修正されています。キャッシュしない方が良いですが、URLの作成は安価です。URLを作成するときにファイルをチェックするのはFogの動作でした。これで、動作は単にリンクを与えることです。このディスカッションを見ることができます: https ://github.com/jnicklas/carrierwave/issues/289および https://github.com/jnicklas/carrierwave/issues/261

于 2011-04-25T13:06:07.330 に答える
0

キャッシングを行います。Paperclipを使用して同様のアプローチを実行しました。

または、URLが使用されているビュー(部分)をキャッシュすることもできます。

于 2011-04-12T12:55:57.210 に答える