在我们转移数据之前,有什么方法可以让我们压缩数据?

时间:2015-12-20 13:42:29

标签: upload server compression data-transfer

我想知道在某些情况下我们在将文件上传到服务器之前需要应用文件压缩的​​原因。据我了解,只要服务器收到压缩文件,就需要解压缩文件以允许服务器读取文件内容。如果从许多客户端平台发送多个Http POST,它肯定会消耗服务器的计算能力。

因此,据我所知,发送压缩文件的方案是上传备份文件,设置文件,仅为客户端平台备份服务器的文件。请给我更多上传压缩数据的方案。

1 个答案:

答案 0 :(得分:1)

我认为以下文章对这个问题给出了完美的解释:http://www.dataexpedition.com/support/notes/tn0014.html

以下是内容:

压缩优点&缺点

简单地说,压缩是一个以字节换取CPU周期的过程。但贸易并不总是好的。有时你可以花很多宝贵的CPU周期来获得很少的收益。

在网络数据传输的背景下,"我应该压缩吗?"是一个常见的问题。但答案可能会变得复杂,取决于几个因素。要记住的最重要的事情是,压缩实际上可以使您的数据移动得更慢,因此不应该在没有考虑的情况下使用它。

压缩是好的时候 压缩算法尝试识别数据集中的大型重复模式,并用较小的模式替换它们。理想情况下,这会缩小数据集的大小。出于网络传输的目的,移动较少的数据意味着移动它需要的时间更少。

主要由纯文本或机器可执行代码组成的文档和文件往往压缩得很好。示例包括文字处理文档,HTML文件,一些.exe文件和一些数据库文件。

在网络传输之前将许多小文件组合到单个存档中通常可以比单独传输每个文件更快地获得速度。即使单个文件本身不可压缩,这也可能是真的。许多归档实用程序都可以选择将文件打包到存档而不进行压缩,例如" -0" " zip"的选项。启用流式文件夹时,ExpeDat会将文件夹的内容合并为单个数据流。

当压缩不好时 许多数据类型不可压缩,因为已经删除了重复模式。这包括大多数图像,视频,歌曲,已压缩的任何数据或任何已加密的数据。

尝试压缩不可压缩的数据会浪费CPU时间。当您尝试高速移动数据时,该CPU时间对于为网络供电至关重要。因此,通过消除无价值压缩的处理时间,实际上最终可以比关闭压缩时更慢地移动数据。

如果仅将压缩实用程序用于组合许多小文件,请检查禁用压缩的选项。例如," zip"命令有一个" -0"将文件打包到存档中而不花时间尝试压缩文件的选项。

内联与离线 许多传输机制允许您在传输数据时将压缩算法应用于数据。这很方便,因为压缩和解压缩无缝地发生,用户不必执行额外的步骤。但它也存在风险,因为在压缩上花费的任何CPU时间都不是花在通过网络提供数据上的时间。如果网络速度非常快,CPU速度很慢,或者压缩算法无法扩展,打开内联压缩可能会导致数据移动速度比关闭压缩速度慢。即使数据是可压缩的,内联压缩也可能比没有压缩慢!

如果您要多次传输相同的数据集,首先使用Zip或Tar-Gzip压缩它是值得的。然后,您可以传输压缩存档,而不会使CPU周期远离网络处理。如果您计划加密数据,请确保先压缩数据,然后再加密。

隐藏的压缩 网络中的设备可能会在您没有意识到的情况下应用压缩。如果"速度"对于不同的数据类型,网络似乎发生了变化。如果在传输已经压缩的数据时网络看起来很慢,但是在传输未压缩的文本文件时速度很快,那么您可以非常确定那些东西会为您做出压缩决定。

网络压缩设备可能会有所帮助,因为它们会减轻终端CPU的压缩负担。但它们也可能会产生非常不一致的结果,因为它们不适用于所有目标和数据类型。网络级压缩也可能会遇到上面讨论的相同的CPU权衡,导致某些文件移动速度比没有压缩时更慢。

如果您正在测试网络速度,请尝试使用已经压缩或加密的数据以确保结果一致。

我应该打开内联压缩吗? 对于压缩数据,图像,音频,视频或加密文件:否。

对于其他类型的数据,请检查两种方式以查看哪种数据更快。

如果网络速度非常快(每秒数百兆比特或更快),请考虑关闭内联压缩,然后在移动数据之前压缩数据。