Den säger till att hela sidan skall processas innan någon information skickas till webläsaren.
response.buffer?
20 svar · 461 visningar · startad av qwerty
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.
...och om jag inte har denna raden överhuvud taget? Skulle det kunna orsaka att sidan aldrig laddas in, utan bara står och "tuggar"?
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...
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?
Nu hängde jag inte med. Är inte response.buffer=false det du vill ha?
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?
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.
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
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
Kuriosa: Varför vill du skriva något till klienten och sedan redirecta denna... personen kommer ju ändå inte se meddelandet!?
Frågar du mig? Jag har inte kört någon redirect...
... och då finns det väl ingen anledning att köra Response.buffer = true...
Jo, annars klagar den när jag sätter cookien
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.
*Oj, ett hörn... där ställer jag mig*
Ha
...???
Trodde verkligen att en viss person kunde allt. Men även den bäste kan välta en blind tuva ibland.
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

