标签: compression

使用Asp.Net进行CSS/JS GZip压缩

我目前在托管的虚拟服务器上,我想为我的Asp.Net 3.5站点启用GZip压缩,我该如何开始?

我试过使用'打包'的JS文件,但它们不起作用,我假设是因为它们没有正确处理......?

javascript compression asp.net iis gzip

11
推荐指数
2
解决办法
1万
查看次数

我们应该使用什么压缩格式; 我们应该让DEFLATE(.zip)休息吗?

由于大多数Linux发行版都放弃了gzip和bzip2来支持LZMA2来压缩它们的包,以及许多平台上的许多开源实现,我想知道:我们不应该将DEFLATE和.zip格式(不幸的是一遍又一遍地反复)放弃,并继续采用其他现代方式分发我们的(源)包?

GNU tar支持J交换机,它使用xz(另一个LZMA2压缩器)作为过滤器:

$ tar cJf foo.tar.xz foo/
Run Code Online (Sandbox Code Playgroud)

但是,我倾向于使用7z(p7zip实现),它是7zaLinux下的朋友,用于创建存档.在创建档案时,我仍然使用"避免tar-bombs"范例,这意味着档案中有一个目录,因此从命令行中提取不会导致当前目录中的文件溢出(这是Linux上的标准运作方式,类似于tar,但在Windows下,它似乎要少得多.

无论如何,似乎由于在软件包中使用(例如Fedora RPMs和Ubuntu DEB),以及tarLZMA2是bzip2后使用的"下一个最好的东西" 等工具的过滤器.它具有很高的压缩率(在标准设置中远远超过bzip2)并且速度非常快(压缩比gzip略慢,

我自己做了一些基准测试,但我想在一些更广泛的基准测试中转向现场:

现在,你会注意到,作为参考实现的7-zip并没有出现在第一位.然而,Freearc使用它自己的.arc格式,这不是真正的跨平台能力,与80年代的 ARC 不兼容.nanozip不是开源的,这是一种低迷,但它的算法很重要,而不是归档!

无论如何,现在使用7-zip及其派生实现(xz)的性能不再是问题,并且压缩率本身就说明了,我想将我的源包分发为.7z.tar.xz存档.但是,我面前有两个障碍,我似乎无法接受:

  1. WinRAR的倡导者.不要误会我的意思,我对WinRAR或其用户没有怨恨,只是我不能在Linux上真正制作RAR,而且没有必要,因为我们有免费的LZMA2工具.正如我所说,自从成为发行包的一个组成部分后,它可以在任何现代发行版中使用.由于需要大约在同一时间做出.7z.rar和LZMA2文件一般都比较小,我不明白为什么不能使用7-Zip.

  2. tar档案必须是zip或bzip2,没有例外.这很难.为什么有这么多人对gzip印象深刻?甚至bzip2在大多数情况下都没有看到太多用法.当然,gzip很快,对于按需压缩(如Web服务器或创建大型镜像备份)而言,这是一个很好的观点.但是分发软件怎么样?LZMA2 非常不对称.虽然压缩需要时间,但解压缩速度非常快.

好的,现在我的问题出现了:

既然LZMA2可以说是下一个更好的压缩算法,为什么人们不会跳上火车呢?为什么人们仍然使用专有的WinRAR,压缩率较差,并且没有移植到Linux(除了unrar,但你显然无法创建存档).为什么Tarball仍然大部分都是gziped?

难道没有办法说服人们转向更新,更可靠的归档格式,这不仅是跨平台的,而且是免费的吗?当我给某人一个文件结尾时.7z,他们往往不知道该怎么做,这会改变吗?

哦,这是我自己做的小基准.我到处使用默认设置:

11837440 GNUtar_TAR.tar
10657984 Arc_ARC.arc
9632524 PA2010_TAR_BZip2.tar.bz2
9536967 PA2010_LHA_Frozen5.lzh
9510148 PA2010_ZIP_BZip2.zipx
9490211 …
Run Code Online (Sandbox Code Playgroud)

compression zip gzip 7zip winrar

11
推荐指数
1
解决办法
3069
查看次数

将7z文件视为.NET流

我想链接多个流操作(例如下载文件,动态解压缩,以及处理没有任何临时文件的数据).这些文件是7z格式.有一个LZMA SDK可用,但强制我创建一个外部输出流而不是一个流本身 - 换句话说,输出流必须完全写入才能使用它.SevenZipSharp似乎也缺少这个功能.

有没有人这样做过?

// in pseudo-code - CompressedFileStream derives from Stream
foreach (CompressedFileStream f in SevenZip.UncompressFiles(Web.GetStreamFromWeb(url))
{
    Console.WriteLine("Processing file {0}", f.Name);
    ProcessStream( f ); // further streaming, like decoding, processing, etc
}
Run Code Online (Sandbox Code Playgroud)

每个文件流的行为类似于表示一个文件的一次性读取流,并且在主压缩流上调用MoveNext()会自动使该文件无效并跳过该文件.

可以进行类似的构造以进行压缩.示例用法 - 对非常大量的数据进行一些聚合 - 对于dir中的每个7z文件,对于每个文件内部,对于每个文件中的每个数据行,总结一些值.

更新2012-01-06

#ziplib(SharpZipLib)已经完成了我需要的带有ZipInputStream类的zip文件.下面是一个示例,它将所有文件生成为给定zip文件中不可搜索的流.仍在寻找7z解决方案.

IEnumerable<Stream> UnZipStream(Stream stream)
{
    using (var zipStream = new ZipInputStream(stream))
    {
        ZipEntry entry;
        while ((entry = zipStream.GetNextEntry()) != null)
            if (entry.IsFile)
                yield return zipStream;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net compression 7zip stream

11
推荐指数
1
解决办法
1007
查看次数

zlib压缩字节数组?

我有这个未压缩的字节数组:

0E 7C BD 03 6E 65 67 6C 65 63 74 00 00 00 00 00 00 00 00 00 42 52 00 00 01 02 01
00 BB 14 8D 37 0A 00 00 01 00 00 00 00 05 E9 05 E9 00 00 00 00 00 00 00 00 00 00
00 00 00 00 01 00 00 00 00 00 81 01 00 00 00 00 00 00 00 00 00 00 00 00 00 …
Run Code Online (Sandbox Code Playgroud)

c# compression bytearray zlib

11
推荐指数
1
解决办法
2万
查看次数

如何在Heroku Cedar上的Play Framework 1应用程序上启用GZIP压缩?

我想为公共资产和HTTP响应启用GZIP压缩以提高性能.我的网站有很多移动访问权限.

据我所知,Play Framework中没有任何内置支持这一点,而Heroku似乎也没有解决方案.

在我的应用上开始获得压缩的最佳方法是什么?

compression gzip heroku playframework cedar

11
推荐指数
3
解决办法
5033
查看次数

压缩/缩小动态html

我正在使用django模板,为了便于阅读,我的html看起来类似于以下内容:

{% if some_variable %}
    text
{% else %}
    nothing exists here
{% endif %}

{% for item in set %}
    {% if forloop.first %}
...etc...
Run Code Online (Sandbox Code Playgroud)

它在运行时转换为以下html,其中包括大量的空格和返回:

text

<div>

  <li

        class='some_class

    >

    some text

   </li>

</div>

etc...
Run Code Online (Sandbox Code Playgroud)

在查看页面源时,有些页面甚至可以运行~3,000行html.

有没有工具在运行时压缩这个HTML?如何删除额外的换行符?

html compression django gzip

11
推荐指数
1
解决办法
6205
查看次数

在 Python 中为 OpenCV 视频对象指定压缩质量

我必须使用包含在各个目录中的大量 jpeg 图像创建低分辨率 AVI 视频。我有将近一百个目录,每个目录可能包含数千个图像。

为了自动化这个过程,我使用 OpenCV 编写了一个 python 脚本来创建一个视频对象,从给定目录加载每个图像,并将每个图像写入该目录的特定视频文件。所有这些都很好用。我的问题是如何控制视频对象的压缩质量。

VideoWriter 模块接受 5 个参数。第二个参数“fourcc”设置压缩代码。

cv2.VideoWriter.open(文件名,fourcc,fps,frameSize[,isColor])

我们可以使用“四字符代码”(即fourcc)在cv2.VideoWriter 中指定压缩代码。

Fourcc = cv2.cv.CV_FOURCC('M','S','V','C') #Microspoft Video 1

这种方法有效,只是视频对象的压缩质量始终设置为最大值。

如果我们让fourcc = -1,则会打开一个Windows 视频压缩对话框,允许用户选择视频压缩并在0 到100 之间设置压缩质量(或时间质量比)。

此 Windows 视频压缩对话框的屏幕截图

每个视频必须是 AVI,并且必须满足特定的文件大小要求。如果使用最大压缩质量,则视频文件太大。然而,要求用户为每个视频选择视频压缩和压缩质量会破坏脚本的自动化。

那么,如何在不使用 Windows 视频压缩对话框的情况下指定视频对象的压缩质量?

我的整个代码发布在下面

import cv2, os

Workspace = "J:\jpg to AVI test"
year = "2014"
file_extension = "avi"
Image_file_dir = Workspace + "\\12 - ECD-BONNETT CREEK Y INT (" + year + ")"
print Image_file_dir
Image_file_list = os.listdir(Image_file_dir)
print "Image_file_list: " + str(Image_file_list)

img_cnt = 0

for …
Run Code Online (Sandbox Code Playgroud)

python compression opencv avi fourcc

11
推荐指数
1
解决办法
1万
查看次数

如何在 C# 中解压缩 Gzipped Http Get Response

想要解压缩从 API 获取的 GZipped 响应。尝试了下面的代码,它总是返回类似:-

\n\n
\\u001f\xef\xbf\xbd\\b\\0\\0\\0\\0\\0\\0\\0\xef\xbf\xbdY]o........\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的代码是:

\n\n
 private string GetResponse(string sData, string sUrl)\n {\n      try\n      {\n           string script = null;\n           try\n           {\n                string urlStr = @"" + sUrl + "?param=" + sData;\n\n                Uri url = new Uri(urlStr, UriKind.Absolute);\n\n                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);\n                request.Method = "GET";\n                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;\n\n                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())\n                using (StreamReader reader = new StreamReader(response.GetResponseStream()))\n                {\n                     script = reader.ReadToEnd();\n                }      \n           }\n           catch (System.Net.Sockets.SocketException)\n           {\n                // The remote site is currently …
Run Code Online (Sandbox Code Playgroud)

c# compression gzip get request

11
推荐指数
2
解决办法
1万
查看次数

Excel / SharedStrings 的排序算法

在 Excel 中,它们将字符串“压缩”为数字映射(尽管我不确定在这种情况下 compress 这个词是否正确)。下面是一个示例:

在此处输入图片说明

虽然这有助于减少整体文件大小和内存占用,但 Excel 如何对字符串字段进行排序?是否每个字符串都需要通过查找映射:如果是这样,那不会大大增加/减慢对字符串字段进行排序的成本(如果有 1M 个值,1M 键查找将不会是琐碎的)。关于这个的两个问题:

  1. 共享字符串是在 Excel 应用程序本身中使用,还是仅在保存数据时使用?
  2. 那么在场上排序的示例算法是什么?任何语言都可以(c、c#、c++、python)。

compression sorting algorithm excel performance

11
推荐指数
1
解决办法
708
查看次数

压缩具有特定顺序的正整数向量 (int32)

我正在尝试压缩长向量(它们的大小范围从 1 到 1 亿个元素)。向量具有正整数,其值范围从 0 到 1 或 1 亿(取决于向量大小)。因此,我使用 32 位整数来包含大数字,但这会消耗太多存储空间。这些向量具有以下特征:

  1. 所有值都是正整数。它们的范围随着向量大小的增长而增长。
  2. 值在增加,但较小的数字确实经常干预(见下图)。
  3. 特定索引之前的值都不大于该索引(索引从零开始)。例如,索引 6 之前出现的值都不大于 6。但是,较小的值可能会在该索引之后重复。这适用于整个阵列。
  4. 我通常处理很长的数组。因此,当数组长度超过 100 万个元素时,即将出现的数字大多是与先前重复出现的数字混合的大数字。较短的数字通常比较大的数字更频繁地重新出现。当您通过数组时,新的更大的数字会添加到数组中。

以下是数组中的值示例:{initial padding..., 0, 1, 2, 3, 4, 5, 6, 4, 7, 4, 8, 9, 1, 10, ... later ..., 1110, 11, 1597, 1545, 1392, 326, 1371, 1788, 541,...}

这是向量的一部分的图: 这是向量的一部分的图:

我想要什么?:因为我使用的是 32 位整数,这会浪费大量内存,因为可以用小于 32 位表示的较小数字也会重复。我想最大限度地压缩这个向量以节省内存(理想情况下,减少 3 倍,因为只有减少这个数量或更多才能满足我们的需求!)。实现这一目标的最佳压缩算法是什么?或者是否可以利用上述数组的特征将该数组中的数字可逆地转换为 8 位整数?

我尝试过或考虑过的事情

  1. Delta 编码:这在这里不起作用,因为矢量并不总是增加。
  2. 霍夫曼编码:这里似乎没有帮助,因为数组中唯一数字的范围非常大,因此,编码表将是一个很大的开销。
  3. 使用变量 Int 编码。即对较小的数字使用 8 位整数,对较大的数字使用 16 位......等等。这将向量大小减小到 size*0.7(不令人满意,因为它没有利用上述特定特性)
  4. 我不太确定以下链接中描述的这种方法是否适用于我的数据:http: //ygdes.com/ddj-3r/ddj-3r_compact.html 我不太了解该方法,但它给了我鼓励尝试类似的事情,因为我认为可以利用数据中的某些顺序来发挥它的优势。例如,我尝试将任何大于 255 的数字(n)重新分配给 n-255,以便我可以将整数保留在 …

compression algorithm integer bit-manipulation

11
推荐指数
3
解决办法
594
查看次数