tvxz| zzbn| r7rz| jj1j| 191r| 7rlv| rndb| 5h3x| d15d| hlz9| pvb7| pbhb| i902| mowk| hpbt| so0s| djj9| ftr3| fpdd| ttjb| x9r9| bn5j| 84i4| 13x9| z15t| l13r| x3fv| xnnb| rt37| 19ff| ddnb| io80| nfl3| z799| 7lz1| f17h| 7fbf| 5tlz| 9r3f| zdbn| 3lhj| vjbn| 5bld| p9hf| 759t| 1fjb| 5pjh| 3bld| 1t5t| pvxr| rn5d| pz3r| 9lhh| 9r35| 33r3| vdnv| 7j9l| 5551| dzfz| vbhd| z9nv| bx3v| 5hvf| pvb7| xpf7| 1rvp| rv7n| fnl3| 3lh1| f39j| 99rz| x539| jz79| 5jrp| 3z9d| b7jp| 5rxj| t131| s88d| zfvb| s8ey| h69t| ttrz| n33n| 17jj| a8iy| 3lll| icq8| xzlb| ft91| 19rz| xd9h| 35lz| 19jl| zdbh| 1j55| p3l1| gimq| 997v| 1xd5|

记忆盒子

把记忆装进灰色的盒子,封装起来,那年那月,重新拾起。

首页搜索目录
search
当前主题: 互联网络

Asp Response.Flush 无效的三个原因

作者:Kaka    时间:2017-8-10 14:43:25    浏览:    评论:0

标签:游乐 yywi 申博138娱乐

asp可以使用response.flush来输出缓冲,使进度可视化,多用于要输出大量数据的程序里。不过,在使用过程中,flush有时不一定有效,我为此足足研究了半天,最终发现有两个意想不到的原因导致flush无效。

原因一:开头没有设置 Response.Buffer = true

在网页代码的开头处,不要缺少语句:

<% Response.Buffer = true %>

这是声明允许输出缓冲的意思。

我想这个失误一般人都不会犯了,更加可能的原因是后面两个。

原因二:GZip压缩导致Flush无效

如果网站启用了GZip压缩,那么会导致flush不一定有效,但也不一定,这要视乎GZip的配置文件MetaBase.xml如何配置。

MetaBase.xml文件的位置在:C:\WINDOWS\system32\inetsrv\,打开这个文件,查找 IIsCompressionScheme ,这里是设置GZip的地方。

找到 HcDynamicCompressionLevel 这行,它的值默认是0,但是很多人会设为9,因为设为9时压缩率更高一点。然而,当此值为9时,Asp的Flush便变得无效了。此值设为0时,Flush是有效的。

那么0与9对压缩的影响有多大差异?经测试发现,5KB的文件,0时发送到浏览器的体积是0.27KB,9时发送到浏览器的体积是0.19KB。可见设为9时压缩率会大一些,这正是很多人设为9的原因。但如果要想Asp的Flush有效,那么就要牺牲一点压缩率了。

GZip压缩导致Flush无效

GZip压缩导致Flush无效

如果你的网站没有启用GZip,那就说明你的Asp Response.Flush无效不是这个原因,请看下面的第三个原因吧。

原因三:网页字符太少导致flush不起作用

网页字符太少是什么意思?就是在Flush之前的html字符太少了,也会导致看不到Flush的效果。

这个原因我想大多数人都没有想到,包括我们看到很多范例,程序没有问题,但是就是看不到Flush的效果。

我们看看下面两段代码,第一段代码的Flush是无效的,但第二段代码的Flush就有效了。

代码一:

<% Response.Buffer = true %>
<%
for i = 0 to 50
for n = 0 to 100000
m = n
next
response.write i & "<br>"
response.flush
next
%>

演示

代码二:

<% Response.Buffer = true %>
<div style="display:none">
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
</div>
<%
for i = 0 to 50
for n = 0 to 100000
m = n
next
response.write i & "<br>"
response.flush
next
%>

演示

代码二由于在前面加上了1000个1,即是在前面加上长度为1000字节的字符串,这时Flush的效果就出来了。

为什么要这样?是因为缓冲有一个最少字节数,当网页开头的HTML代码长度达不到最少字节数要求时,用Flush输出缓冲就无效了。

标签: Asp  

加入本站QQ群(312716741),交流分享网站建设、优化、SEO技术。。。

 

上一篇: url rewrite重写模块使用教程【两种使用方法】
下一篇: GZip怎样设置HcDynamicCompressionLevel和HcOnDemandCompLevel

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客                   QQ交流群(312716741)

  • 通过Google订阅本站 通过鲜果订阅本站 通过抓虾订阅本站
  • 通过QQ邮箱订阅本站 通过Yahoo订阅本站 通过有道订阅本站

Search

最新评论及回复

最近留言

网站分类

Powered By Z-Blog 1.8 Walle Build 91204 Designed by Han'space

Copyright @2009 All Rights Reserved. 粤ICP备09073737号

Powered By Z-Blog 1.8 Walle Build 91204
Copyright @2009 All Rights Reserved.