我与请求JSON数据的Web服务器进行HTTP通信.我想用这个压缩这个数据流Content-Encoding: gzip.有没有办法Accept-Encoding: gzip在我的HttpClient中设置?gzipAndroid参考中的搜索不会显示与HTTP相关的任何内容,您可以在此处看到.
关于是否要做什么,目前的情况如何
Transfer-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
或者a
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
当我想允许具有有限带宽的客户端表示他们愿意接受压缩响应并且服务器具有最终决定是否压缩时.
后者就是例如Apache的mod_deflate和IIS,如果你让它来处理压缩.根据要压缩的内容的大小,它将执行额外的操作Transfer-Encoding: chunked.
它还将包括一个Vary: Accept-Encoding已经暗示该问题的方法.Content-Encoding似乎是实体的一部分,因此将Content-Encoding金额更改为实体的更改,即不同的Accept-Encoding标头意味着例如缓存不能使用其相同实体的缓存版本.
有没有一个明确的答案,我已经错过了(并没有埋没在某个apache新闻组的长线程中的消息中)?
我目前的印象是:
ETag在透明地压缩响应时应该怎么做?)所以我假设正确的方式将是一个Transfer-Encoding: gzip(或者,如果我另外大块的身体,它将成为 Transfer-Encoding: gzip, chunked).并且没有理由在这种情况下触摸Vary或ETag任何其他标题,因为它是传输级别的东西.
现在我不太关心"逐跳"的问题Transfer-Encoding,其他人似乎首先关注的是,因为代理可能会解压缩并向客户端转发未压缩的东西.但是,如果原始请求具有正确的Accept-Encoding标头,则代理可能也可以原样转发(压缩),如果所有浏览器都知道给定的话.
顺便说一句,这个问题至少有十年之久,请参阅 https://bugzilla.mozilla.org/show_bug.cgi?id=68517.
任何有关这方面的澄清将不胜感激.无论是在符合标准的还是被认为是实用的方面.例如,仅支持透明"内容编码"的HTTP客户端库将成为反对实用性的论据.
我通过apache提供所有内容,Content-Encoding: zip但即时压缩.我的大量内容是磁盘上的静态文件.我想事先gzip文件,而不是每次请求时压缩它们.
我认为,这是mod_gzip在Apache 1.x中自动执行的操作,但只是将文件与.gz放在一起.不再是这种情况了mod_deflate.
我使用Perl在网上获取一些页面,LWP::UserAgent并希望尽可能礼貌.默认情况下,LWP::UserAgent不通过gzip无缝处理压缩内容.是否有一种简单的方法可以实现这一目标,为每个人节省一些带宽?
我有一个我需要从中下载文件的设备.在某些情况下,该文件可能不正确content-encoding.特别是,当它没有被压缩或以任何方式压缩时,它可以具有"gzip"的内容编码.
因此,当文件被gzip压缩时,使用基本的ajax GET获取内容很简单:
$.ajax({
url: 'http://' + IP + '/test.txt',
type: 'GET'
})
.done(function(data) {
alert(data);
});
Run Code Online (Sandbox Code Playgroud)
但是,正如您所料,当内容编码错误时,这会失败.
要清楚,我不是在寻找一种解决方案来绕过ERR_CONTENT_DECODING_FAILED浏览器中只需导航到给定网址的时间.我希望能够将例如csv加载到javascript中的字符串中以进行进一步的解析.
我可以获取文件,并强制它跳过尝试解码,或覆盖响应的内容编码,或某些此类?
应该使用什么InputStream类型来处理将HTTP Content-Encoding设置为deflate的 URLConnection流?
对于gzip或zip的Content-Encoding,我使用GZIPInputStream,没问题.
对于"deflate"的Content-Encoding,我尝试过使用InflaterInputStream和DeflaterInputStream,但是我得到了
java.util.zip.ZipException:java.util.zip.InflaterInputStream.read中的未知压缩方法(InflaterInputStream.java:147)
我的理解是"deflate"编码是指Zlib压缩,根据文档,这应该由InflaterInputStream处理.
使用ob_start()和有ob_start('ob_gzhandler')什么区别?
它如何影响页面速度?
我想使用gzip压缩内存缓冲区并将压缩的字节放入另一个内存缓冲区。我想在 HTTP 数据包的有效负载中发送压缩缓冲区Content-Encoding: gzip。我可以使用zlib进行 deflate 压缩(compress()函数)轻松地做到这一点。但是,我没有看到可以满足我需要的 API ( gzip )。zlib API 是压缩并写入文件(gzwrite())。但是,我想压缩并写入缓冲区。
有任何想法吗?
我在 Linux 上使用 C 语言。
HTTP服务器使用内容协商来根据客户端的Accept-Encoding标头提供单个URL标识或gzip编码.
现在说我们在客户端和httpd之间有一个像squid这样的代理缓存.
如果代理缓存了URL的两种编码,它如何确定要提供的服务?
非gzip实例(最初未提供服务Vary)可以提供给任何客户端,但编码实例(具有Vary: Accept-Encoding)只能发送到具有与Accept-Encoding原始请求中使用的相同标头值的客户端.
例如Opera发送,"deflate, gzip, x-gzip, identity, *;q=0"但IE8发送"gzip, deflate".根据规范,缓存不应该在两个浏览器之间共享内容编码的缓存.这是真的?
您可能知道HTML相关的文件格式是使用GZip压缩,服务器端(通过Apache服务器上的mod_gzip)压缩的,并且由兼容的浏览器解压缩.("内容编码")
这仅适用于HTML/XML文件吗?假设我的PHP/Perl文件生成一些简单的逗号分隔数据,并将其发送到浏览器,它是否会被默认编码?
那些像Silverlight或Flash这样的平台,当他们下载这些数据时,它会被浏览器/运行时自动压缩/解压缩吗?有没有办法测试这个?