0
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
..
end

format.csv {send_data(export), :type => 'text/csv;header=present',:filename => 'export.csv') }

大量のデータをエクスポートしたいのですが、深刻なパフォーマンスの問題が発生し、メモリがいっぱいになりました。csv をエクスポートするより良い方法はありますか?

4

1 に答える 1

1

FCSVはFasterCSVと同じですよね?

記憶に対処するための2つの提案:

  1. 出力を一時ファイルに書き込んでから送信します。そうすれば、メモリ内のすべてのものを必要としません
  2. 出力をメモリに蓄積するのではなく、ユーザーに直接ストリーミングします。たとえば、この質問に対する受け入れられた回答を参照してください:Rails3.2アプリからのCSVダウンロードのストリーミング

生成の実行に時間がかかりすぎる場合は、コードのプロファイルを作成してから改善を試みる必要があります...または、生成をバックグラウンドタスクとして実行し、ユーザーが後でフェッチできるようにします。

于 2012-05-17T02:55:56.680 に答える