标签: deflate

我可以用带有http-gzip或deflate压缩的python请求lib来发布数据吗?

我使用python 2.7的请求模块将更大的数据块发布到我无法更改的服务中.由于数据主要是文本,因此数据量很大但压缩效果会很好.服务器将接受gzip或deflate-encoding,但是我不知道如何指示请求执行POST并自动正确编码数据.

是否有可用的最小示例,说明了这是如何实现的?

python gzip http deflate

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

使用python在Heroku上启用压缩

谷歌现在因为不那么适合移动设备而受到惩罚.因此,为了使事情变得更好,它建议我使用Gzip或Deflate压缩我的大量Javascript.我已经看到了一些关于堆栈溢出的旧建议,但没有任何开箱即用的东西,我试图搜索附加组件,但到目前为止似乎没有什么可以做到这一点.压缩或启用gzip最不痛苦和最强大的是什么?

以下是Google建议我做的事情:

启用压缩使用gzip或deflate压缩资源可以减少通过网络发送的字节数.为以下资源启用压缩,将传输大小减少420KiB(减少74%).

我正在使用Django,如果这更容易.

python gzip heroku deflate

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

如何预压缩非常大的html文件

我需要使用gzip或deflate预压缩一些非常大的html/xml/json文件(大型数据转储).我从不想要提供未压缩的文件.它们是如此庞大和重复,以至于压缩可能会非常好地工作,虽然一些旧的浏览器不能支持解压缩,但我的典型客户不会使用它们(尽管如果我能产生某种'嘿你需要的那样会很好升级浏览器的消息)

我自动生成文件,我可以轻松生成.htaccess文件以与每种文件类型一起使用.基本上我想要的是一些总是在mod_gunzip版本.因为文件很大,并且因为我将重复提供它们,所以我需要一种方法,允许我在命令行上压缩一次,非常好.

我在这个网站上找到了一些关于如何使用gzip进行此操作的信息,但我想知道是否有人可以指导我如何使用deflate来做到这一点.奖励指向一个完整的答案,包括我的.htaccess文件应该是什么样子,以及我应该使用的命令行代码(GNU/Linux)来获得最佳压缩.答案的超级奖励积分还解决了如何向不兼容的浏览器发送"抱歉没有文件"消息.

如果我们可以创建一个"预压缩"标签来涵盖这样的问题,那将是很可爱的.

-FT

linux compression apache gzip deflate

10
推荐指数
1
解决办法
3265
查看次数

DeflateStream不能在MemoryStream上运行?

我有以下代码:

MemoryStream resultStream = new MemoryStream();
string users = ""//Really long string goes here
BinaryFormatter bFormatter = new BinaryFormatter();
using (MemoryStream assignedUsersStream = new MemoryStream())
{
    bFormatter.Serialize(assignedUsersStream, users);
    assignedUsersStream.Position = 0;

    using (var compressionStream =
        new DeflateStream(resultStream, CompressionLevel.Optimal))
    {
        assignedUsersStream.CopyTo(compressionStream);

        Console.WriteLine("Compressed from {0} to {1} bytes.",
            assignedUsersStream.Length.ToString(),
            resultStream.Length.ToString());
    }
}            
Run Code Online (Sandbox Code Playgroud)

事情是resultStream永远是空的!

我在这做错了什么?

c# serialization memorystream deflate binary-serialization

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

有没有理由在Ruby on Rails中默认没有启用Rack :: Deflater gzip?

有没有理由在Ruby on Rails中默认没有启用Rack :: Deflater gzip?如果有的话,gzip对rails有什么缺点?

gzip ruby-on-rails deflate

10
推荐指数
1
解决办法
455
查看次数

在deflate算法中确定块大小的一些好策略是什么?

我正在编写一个压缩库作为一个小的项目,我已经足够了(我的库可以提取任何标准的gzip文件,以及生成兼容的(但肯定不是最佳的)gzip输出)是时候计算了一个有意义的块终止策略.目前,我只是在每32k输入(LZ77窗口大小)之后关闭块,因为它是通用的并且快速实现 - 现在我回过头来尝试实际提高压缩效率.

放气的规格只有这样说的:"压缩机终止块时,它确定开始用新鲜的树一个新的模块将是有益的,或者当块大小填补了压缩机的缓冲块",这是不是所有的这很有帮助.

我通过SharpZipLib代码进行了排序(因为我认为这将是一个可读的开源实现),并发现它每16k字节的输出终止一个块,忽略输入.这很容易实现,但似乎必须有一些更具针对性的方法,特别是考虑到规范中的语言"确定用新鲜树开始新块将是有用的".

那么,是否有人对新战略或现有战略的例子有任何想法?

提前致谢!

compression algorithm gzip deflate

9
推荐指数
1
解决办法
2291
查看次数

在C中放气和膨胀(zlib.h)

我正在尝试实现zlib.h deflate和inflate函数来压缩和解压缩char数组(而不是文件).

我想知道以下语法是否正确?我错过了什么或定义错误的东西?

char a[50] = "Hello World!";
char b[50];
char c[50];

// deflate
// zlib struct
z_stream defstream;
defstream.zalloc = Z_NULL;
defstream.zfree = Z_NULL;
defstream.opaque = Z_NULL;
defstream.avail_in = (uInt)sizeof(a); // size of input
defstream.next_in = (Bytef *)a; // input char array
defstream.avail_out = (uInt)sizeof(b); // size of output
defstream.next_out = (Bytef *)b; // output char array

deflateInit(&defstream, Z_DEFAULT_COMPRESSION);
deflate(&defstream, Z_FINISH);
deflateEnd(&defstream);

printf("Deflate:\n%lu\n%s\n", strlen(b), b);

// inflate
// zlib struct
z_stream infstream;
infstream.zalloc = Z_NULL;
infstream.zfree = Z_NULL;
infstream.opaque …
Run Code Online (Sandbox Code Playgroud)

c compression zlib deflate

9
推荐指数
2
解决办法
3万
查看次数

DeflatorInputStream和DeflatorOutputStream不重建原始数据

我想压缩一些数据,所以我遇到了DeflatorInputStream和DeflatorOutputStream类.但是,以下示例显示在使用这些类时,我似乎无法重建原始数据.

当我切换到ZipInputStream和ZipOutputStream它确实有效,但由于我本身不需要zip文件,我认为通用压缩会更好.主要是我有兴趣理解为什么这个例子不起作用.

//Create some "random" data
int bytesLength = 1024;
byte[] bytes = new byte[bytesLength];
for(int i = 0; i < bytesLength; i++) {
     bytes[i] = (byte) (i % 10);
}

//Compress the data, and write it to somewhere (a byte array for this example)
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
DeflaterOutputStream outputStream = new DeflaterOutputStream(arrayOutputStream);
outputStream.write(bytes);

//Read and decompress the data
byte[] readBuffer = new byte[5000];
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(arrayOutputStream.toByteArray());
DeflaterInputStream inputStream = new DeflaterInputStream(arrayInputStream);
int read = inputStream.read(readBuffer); …
Run Code Online (Sandbox Code Playgroud)

java compression deflate

9
推荐指数
1
解决办法
3858
查看次数

无需访问服务器配置即可对asp.net mvc 2进行GZip或Deflate压缩

我试图使用这里描述的方法ASP.NET MVC Action Filter - Caching and Compression.起初,结果令人鼓舞,因为服务器确实开始发送GZip编码文件,但经过进一步测试,有时,在带有Html.RenderAction部分的页面中,该属性将被调用两次gziping allready gzip压缩页面.有没有人知道一个更稳定的方法来使用ASP.NET MVC 2提供压缩页面,或者任何关于如何修改代码的想法更通用?

public class CompressFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(FilterExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;
        string acceptEncoding = request.Headers["Accept-Encoding"];
        if (string.IsNullOrEmpty(acceptEncoding)) return;
        acceptEncoding = acceptEncoding.ToUpperInvariant();
        HttpResponseBase response = filterContext.HttpContext.Response;
        if (acceptEncoding.Contains("GZIP"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
        else if (acceptEncoding.Contains("DEFLATE"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
    }
Run Code Online (Sandbox Code Playgroud)

}

c# gzip filter deflate asp.net-mvc-2

8
推荐指数
1
解决办法
1677
查看次数

试图了解PNG文件中的zlib/deflate

我目前正在为了学习目的而自己编写一个小的PNG图像I/O库.我的问题如下:

我创建了一个尺寸仅为2 x 2的小PNG,并在十六进制编辑器中打开它以研究其内容.这是我使用GIMP创建的图像,并以压缩"9"存储.

(请注意,这是原始2 x 2像素图像的放大图像;))

一个二乘二像素的黑色,红色,蓝色和绿色像素.

所以我猜没有压缩,这在内存中看起来像这样:

00 00 00 FF 00 00 00 00 FF 00 FF 00
Run Code Online (Sandbox Code Playgroud)

存储时没有alpha通道.

(为了清楚起见,我在这里只说了这个.我知道压缩,并且不希望在文件中看到这个字节模式).

我提取了IDAT块并剥离了块ID("IDAT")和尾随CRC值并得到了这个字节序列:

08 D7 05 C1 01 01 00 00 00 80 10 FF 4F 17 10 48 06 0F FE 02 FE
Run Code Online (Sandbox Code Playgroud)

现在前两个字节08 D7包含有关编码块的信息.最后四个字节0F FE 02 FE必须是ADLER32校验和.

这最终让我得到以下字节:

05 C1 01 01 00 00 00 80 10 FF 4F 17 10 48 06
Run Code Online (Sandbox Code Playgroud)

以二进制表示形式写的这些字节是:

0000 0101  1100 0001  0000 0001  0000 0001
0000 0000 …
Run Code Online (Sandbox Code Playgroud)

implementation encoding png deflate

8
推荐指数
2
解决办法
2570
查看次数