大きなファイルを同時に圧縮してアップロードするソリューションやユーティリティはありますか?

大きなファイルを同時に圧縮してアップロードするソリューションやユーティリティはありますか?

ブロードバンド接続経由で大きなファイルをアップロードするには時間がかかります。アップロード前に最大圧縮率を使用してファイルを圧縮すると、時間がかかります。

ファイルを圧縮して同時にリモート エンドにアップロードできるソリューションはありますか? ある場合、圧縮時間はアップロード時間に組み込まれます。

たとえば、ファイルの圧縮には 5 分かかり、圧縮ファイルのアップロードには 10 分かかります。圧縮の後にアップロードのタスクを実行すると、約 15 分かかります。

圧縮してアップロードするソリューションを使用する場合、アップロード速度は通常圧縮よりも遅いため、約 10 分しかかからない場合があります。

答え1

ファイル転送に使用しているプロトコルによって異なります。通常は、すでに透過的に実行されています。

HTTP (および HTTPS) プロトコルは、サーバーとクライアントの両方が実装していれば、オンザフライ圧縮をサポートします。まず、クライアントはサーバーにサポートする圧縮の種類を知らせます。一般的な HTTP リクエスト ヘッダーには、次のような行が含まれます。

Accept-Encoding: gzip, deflate

サーバーはサポートする圧縮アルゴリズムを選択し、HTTP ヘッダー (以下のように) に示して、圧縮されたコンテンツを提供します。

Content-Encoding: gzip

最新の HTTP クライアント (Chrome、Firefox、Internet Explorer、Safari など、アルファベット順) とサーバー (Apache、Microsoft IIS、nginx など) のほとんどは、適切に構成されている場合、オンザフライで圧縮されたデータを転送します。

同様に、FTP のモード Z など、他のプロトコルでも圧縮が実装される場合があります。Microsoft の Remote Differential Compression などの特殊なプロトコルを使用すると、異なる部分のみを転送することで、ローカル ファイルとリモート ファイルを同期できます。


編集:

透過的な HTTP 圧縮はファイルのダウンロードのみに適用され、その逆は適用されないことがわかりました。アップロード用にデータを圧縮したい場合は、JavaScript を記述し、FileReaderのような圧縮ライブラリを使用する必要がありますcompressjs

関連情報