記憶盒子

把記憶裝進(jìn)灰色的盒子,封裝起來,那年那月,重新拾起。

首頁搜索目錄
search
當(dāng)前主題: 互聯(lián)網(wǎng)絡(luò)

Asp Response.Flush 無效的三個(gè)原因

作者:Kaka    時(shí)間:2017-8-10 14:43:25    瀏覽:    評論:0

asp可以使用response.flush來輸出緩沖,使進(jìn)度可視化,多用于要輸出大量數(shù)據(jù)的程序里。不過,在使用過程中,flush有時(shí)不一定有效,我為此足足研究了半天,最終發(fā)現(xiàn)有兩個(gè)意想不到的原因?qū)е耭lush無效。

原因一:開頭沒有設(shè)置 Response.Buffer = true

在網(wǎng)頁代碼的開頭處,不要缺少語句:

<% Response.Buffer = true %>

這是聲明允許輸出緩沖的意思。

我想這個(gè)失誤一般人都不會(huì)犯了,更加可能的原因是后面兩個(gè)。

原因二:GZip壓縮導(dǎo)致Flush無效

如果網(wǎng)站啟用了GZip壓縮,那么會(huì)導(dǎo)致flush不一定有效,但也不一定,這要視乎GZip的配置文件MetaBase.xml如何配置。

MetaBase.xml文件的位置在:C:\WINDOWS\system32\inetsrv\,打開這個(gè)文件,查找 IIsCompressionScheme ,這里是設(shè)置GZip的地方。

找到 HcDynamicCompressionLevel 這行,它的值默認(rèn)是0,但是很多人會(huì)設(shè)為9,因?yàn)樵O(shè)為9時(shí)壓縮率更高一點(diǎn)。然而,當(dāng)此值為9時(shí),Asp的Flush便變得無效了。此值設(shè)為0時(shí),F(xiàn)lush是有效的。

那么0與9對壓縮的影響有多大差異?經(jīng)測試發(fā)現(xiàn),5KB的文件,0時(shí)發(fā)送到瀏覽器的體積是0.27KB,9時(shí)發(fā)送到瀏覽器的體積是0.19KB。可見設(shè)為9時(shí)壓縮率會(huì)大一些,這正是很多人設(shè)為9的原因。但如果要想Asp的Flush有效,那么就要犧牲一點(diǎn)壓縮率了。

GZip壓縮導(dǎo)致Flush無效

GZip壓縮導(dǎo)致Flush無效

如果你的網(wǎng)站沒有啟用GZip,那就說明你的Asp Response.Flush無效不是這個(gè)原因,請看下面的第三個(gè)原因吧。

原因三:網(wǎng)頁字符太少導(dǎo)致flush不起作用

網(wǎng)頁字符太少是什么意思?就是在Flush之前的html字符太少了,也會(huì)導(dǎo)致看不到Flush的效果。

這個(gè)原因我想大多數(shù)人都沒有想到,包括我們看到很多范例,程序沒有問題,但是就是看不到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個(gè)1,即是在前面加上長度為1000字節(jié)的字符串,這時(shí)Flush的效果就出來了。

為什么要這樣?是因?yàn)榫彌_有一個(gè)最少字節(jié)數(shù),當(dāng)網(wǎng)頁開頭的HTML代碼長度達(dá)不到最少字節(jié)數(shù)要求時(shí),用Flush輸出緩沖就無效了。

x

標(biāo)簽: Asp  

※ 網(wǎng)站速度慢?試試網(wǎng)站自動(dòng)優(yōu)化工具 ※

上一篇: url rewrite重寫模塊使用教程【兩種使用方法】
下一篇: GZip怎樣設(shè)置HcDynamicCompressionLevel和HcOnDemandCompLevel

發(fā)表評論:

◎歡迎參與討論,請?jiān)谶@里發(fā)表您的看法、交流您的觀點(diǎn)。

訂閱博客                   QQ交流群(312716741)

  • 通過Google訂閱本站 通過鮮果訂閱本站 通過抓蝦訂閱本站
  • 通過QQ郵箱訂閱本站 通過Yahoo訂閱本站 通過有道訂閱本站

Search

最新評論及回復(fù)

最近留言

網(wǎng)站分類

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

Copyright @2009-2024 All Rights Reserved. 粵ICP備14028160號-1

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