0

私はrubyzip20MBから1GBの範囲のファイル/フォルダーのzip/unzipに使用しています.20MBのフォルダーを圧縮した後、作成されたrubyzipzipファイルはほぼ同じサイズであることに気付きました。圧縮ファイルは実際のファイル サイズの 40% ~ 50% 未満でなければならないため、使用してみsystem(zip, archive, Dir["#{path}/**/**"])ましたが、それを呼び出す正しい構文を取得できないと思います。

  1. rubyzipサイズも小さくなければならない実際のzipファイルを作成できないのはなぜですか。
  2. 500MBを超えるzipファイルの場合、そのサイズのファイルのコストパフォーマンスの問題が発生するため、send_fileを使用してクライアントに送信する方法.500MB以上のzipファイルをパブリックフォルダーに配置し、サーバーにサービスを提供させるとどうなりますかパフォーマンスが向上する可能性がありますが、正しいですか?
  3. 使用する代わりに他のオプションがありますかrubyzip/zipruby(ライブラリも必要です)。

Ruby 1.9 と Rails 2.3 を使用しています。

私のコード:-

require 'zip/zip'
require 'fileutils'
require 'zip/zipfilesystem'


def self.compress_test(path)

    path="#{RAILS_ROOT/answers/}"  
     path.sub!(%r[/$],'')
     archive = File.join(path,File.basename(path))+'.zip'
     FileUtils.rm archive, :force=>true
     Zip::ZipFile.open(archive, 'w') do |zipfile|
       Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file|
             begin  
                 zipfile.add(file.sub(path+'/',''),file)   
             rescue Zip::ZipEntryExistsError
             end
       end
     end
 end
4

1 に答える 1