webForumDet fria alternativet
Logga in / Bli medlem

response.buffer?

ASP

20 svar · 461 visningar · startad av qwerty

Medlem sedan jan. 2001391 inlägg
Trådstart#1

Exakt vad gör denna rad?

<% response.buffer = true %>

Tack p f-hand

Medlem sedan sep. 2000215 inlägg
#2

Den säger till att hela sidan skall processas innan någon information skickas till webläsaren.

Medlem sedan dec. 19996 721 inlägg
#3

Det gör att allt innehåll som skrivs ut till till response-objektet buffras, och skickas till klienten för när körningen kommit till slutet på sidan, eller om metoden response.flush körs.

Med response.buffer=false skrivs innehållet ut allt eftersom.

Medlem sedan jan. 2001391 inlägg
#4

...och om jag inte har denna raden överhuvud taget? Skulle det kunna orsaka att sidan aldrig laddas in, utan bara står och "tuggar"?

Medlem sedan dec. 19998 577 inlägg
#5

Nä, då är det fel på din kod (om den inte är gjord så att den skall stå och tugga... :))

I ASP 2.0 så är buffer default satt på false och i ASP 3.0 så är den default satt på true...

Medlem sedan okt. 20001 558 inlägg
#6

Men ifall jag vill skriva ut en av mina c:a 600 rader med en response.write så måste jag ju ha den satt till "True". Men då måste ju hela sidan laddas innan den visas, kan man inte undgå detta?

Medlem sedan dec. 19996 721 inlägg
#7

Nu hängde jag inte med. Är inte response.buffer=false det du vill ha?

Medlem sedan okt. 20001 558 inlägg
#8

Nja, för jag måste ju ha Response.Buffer = "True" högst upp för att kunna använda Response.Write i koden, eller? Men ifall min Response.Write ligger på rad 20 av 600 så tyckte jag att den kanske var onödigt att den var tvungen att ladda hela sidan innan den visades? Eller är det jag som har fått hjärnsläpp?

Medlem sedan juni 200032 967 inlägg
#9

du har nog fått lite släpp... ;)

användandet av response.write går lika bra oberoende av om buffer är true eller false. däremot är det vissa av response-objektets metoder man inte kan använda sig av om buffer=false, exempelvis end och flush. response.redirect får dock användas, under förutsättning att ingenting ännu skrivits till klientens webbläsare.

Medlem sedan juni 2000144 inlägg
#10

Rossifumi: Då kan du använda dig av Response.Flush.
Med det säger man till servern att skriva ut allt som har bearbetas fram till att Response.Flush

Är inte allt för bra på att förklara saker och ting men jag försöker mej på ett exempel :)
Låt säga att vi har gjort ett litet webbgränssnitt för att kolla sin mailbox. Vi har 600(!?) mail i inboxen.
Beroende på kodningen kanske det tar ett litet tag att lista alla 600 mail på sidan. Så istället för att bara visa en vit sida som laddas i 10 sekunder kan man skriva ut att det finns 600 mail i inboxen och sedan ladda vidare på sidan, då kanske det går upp ett litet ljus för användaren "Aha, 600 mail...det kanske tar ett par sekunder att ladda" eller liknande :)

Man börjar sidan med

Response.Buffer = True

Sedan skriver man ut antalet mail i inboxen:

response.write intAntalMail

För att sedan få det att visas på sidan direkt använder vi Flush...

Response.Flush

Sedan fortsätter vi med att skriva ut rubriken på alla mail i inboxen men det skrivs inte ut förens hela sidan är laddad

For i = 1 To intAntalMail
response.write Rubrik
Next
Medlem sedan okt. 20001 558 inlägg
#11

Aha... jag måste dock ha värdet till true, annars får jag HTTP Headern har... hela tiden. Beror nog på mina cookies :) Tack för svaren

Medlem sedan dec. 19998 577 inlägg
#12

Kuriosa: Varför vill du skriva något till klienten och sedan redirecta denna... personen kommer ju ändå inte se meddelandet!?

Medlem sedan okt. 20001 558 inlägg
#13

Frågar du mig? Jag har inte kört någon redirect...

Medlem sedan dec. 19998 577 inlägg
#14

... och då finns det väl ingen anledning att köra Response.buffer = true... ;)

Medlem sedan okt. 20001 558 inlägg
#15

Jo, annars klagar den när jag sätter cookien :q

Medlem sedan juni 200032 967 inlägg
#16

vilket är helt rätt, eftersom för att sätta en cookie måste du modifiera http-headern, och det får du inte göra om du inte buffrar. :)

Medlem sedan dec. 19998 577 inlägg
#17

*Oj, ett hörn... där ställer jag mig* :e

Medlem sedan okt. 20001 558 inlägg
#18

Ha ;)

Medlem sedan jan. 2001391 inlägg
#19

...???
Trodde verkligen att en viss person kunde allt. Men även den bäste kan välta en blind tuva ibland.

Medlem sedan sep. 200061 inlägg
#20

Det finns en annan fördel med response.buffer=true och det är att det går snabbare att skriva ut sidan. Kolla på http://www.learnasp.com/learn

263 ms totalt · 4 externa anrop · v20260731065814-full.81e7e81c
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)