论坛首页 Web前端技术论坛

如何使 XMLHTTP 支持 HTTP 1.1 的 gzip 压缩传送

浏览 12336 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-04-27  
XMLHTTP 是可以支持 HTTP 1.1 的 gzip 压缩方式传送数据的,不过要使用“MSXML2.ServerXMLHttp”这个 ActiveX 对象。
这里有一段 ASP 的例子代码:
http://www.webmasterworld.com/forum24/396-2-10.htm
其中:
set xmlhttp = server.Createobject("MSXML2.Serverxmlhttp.4.0");
with xmlhttp
.open "GET", sTargetDataPage, false
'we need to setrequestheaders twice due to KB article Q234486.
.setRequestHeader "Cookie", "x=y"
.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1);"
.setRequestHeader "Referer", sRef
.setRequestHeader "accept-language", "en-us"
.setRequestHeader "content-type", ""
.setRequestHeader "content-length", ""
.setRequestHeader "accept-encoding", "gzip, deflate"
.setRequestHeader "accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*" 

最重要的是这一行:
.setRequestHeader "accept-encoding", "gzip, deflate"

稍微改一下就可以改成 JavaScript 的代码。

不过在服务器端的 Servlet 也需要设置相应的选项才可以与浏览器正常通信。不同的 Web Container 设置方法是不一样的。如果用 Apache,还要装上 mod_gzip 这个模块。稍后我会写一个简单的例子出来。
   发表时间:2004-04-28  
Tomcat是否只能用filter来实现呢?
我原来用filter试过一次,结果用telnet *.*.*.* 8080来看网页,依然不是压缩过的,是我的方法有问题吗?
0 请登录后投票
   发表时间:2005-07-20  
MSXML2.xmlhttp本来就支持打开GZIP压缩过的内容
只是效率太低了,太浪费时间了!不知道IE在干啥。一个30k大小的内容,用winzip一下就打开了。IE的xmlhttp却要弄上将近30秒才能解开,不知道怎么回事。
0 请登录后投票
   发表时间:2005-07-20  
太奇怪了,我用xmlhttp去打开一个xml文件,这个文件在服务器端会被filter用gzip压缩。如果xmlhttp用GET方式打开,速度很快,几乎没有影响。如果用POST方式打开就会很慢,不知道为什么!!!
非常的郁闷。
0 请登录后投票
   发表时间:2005-07-21  
原来是我搞错了,速度快的话只是因为本地有缓存。清空本地缓存后,无论POST和GET方法,打开压缩过的内容都很慢!!!
有人告诉我为什么吗?解压缩需要时间是可以理解的,但是一个30k大小的文件解压缩不应该有什么明显的延迟的感觉的阿。并且看IE用的CPU也几乎为0.
这样这种用降低网络流量,来提高用户响应速度的方案根本行不通吗!!!
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics