ブロードバンド接続経由で大きなファイルをアップロードするには時間がかかります。アップロード前に最大圧縮率を使用してファイルを圧縮すると、時間がかかります。
ファイルを圧縮して同時にリモート エンドにアップロードできるソリューションはありますか? ある場合、圧縮時間はアップロード時間に組み込まれます。
たとえば、ファイルの圧縮には 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
。