Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Buffering benyttes som en forbrænder til (område til opsamling af data om du vil) at sende det indhold som du genererer på serveren (med Response.Write). Dette muliggør bla. at du kan sætte Response-headers (som f.eks. Content-Type) efter du er begyndt at skrive data med Response.Write - noget som ellers ikke ville være muligt uden buffering slået til.
Response.Buffer = true
slår buffering til og dette er i øvrigt standardindstillingen for ASP 3.0.
Når du kalder Response.Flush sender du data som ligger i bufferen til klienten og du kan herefter ikke længere ændre Response-headers (da data jo nu blevet sendt og dermed de headers der kunne sættes).
Et par eks, så du kan se forskellen: Siden bliver først vist når alt er færdig, da bufferen først bliver udskrevet her: <% response.buffer = true %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Untitled</title></head> <body> <% for f=1 to 10000000 if f mod 100000 = 0 then response.write "hejsa<br>" end if next %> </body> </html>
Siden bliver løbende opdateret med nye data, da de ikke bliver gemt i bufferen: <% response.buffer = false %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Untitled</title></head> <body> <% for f=1 to 10000000 if f mod 100000 = 0 then response.write "hejsa<br>" end if next %> </body> </html>
Siden bliver løbende opdateret med nye data. Bufferen bliver tømt manuelt via flush: <% response.buffer = true %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Untitled</title></head> <body> <% for f=1 to 10000000 if f mod 100000 = 0 then response.write "hejsa<br>" response.flush end if next %> </body> </html>
Det kan f.eks bruges til at lave en "Loader..." besked på tunge sider:
<% response.buffer = true %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Untitled</title></head> <body> <div id="divMsg">Vent mens siden loader...</div> <% response.flush for f=1 to 10000000 if f mod 100000 = 0 then response.write "hejsa<br>" end if next %> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- document.getElementById("divMsg").style.display = "none" //--> </SCRIPT> </body> </html>
Okay takker for svarene. Mente også det var noget i den retning, synes bare ikke det virker helt efter hensigten så. Da jeg har anvendt response.buffer = true i et asp dokument og alligevel udskriver siden åbenbart ikke af en gang, ses da jeg havde anbragt font-style i slutningen af dokumentet, ændrede teksttypen af og til.
Så virker response.buffer vel ikke som den burde?
Synes godt om
Slettet bruger
14. december 2006 - 16:19#5
Med response.buffer kan man så lave at den venter 5 sekunder hvis man trykker på en knap, imens den skriver "Vent mens nyheden oprettes"
Jeg bruger ikke response.buffer nogle steder i min kode, men alligevel viser den først siden når det hele er klar til at blive vist. Kan det være fordi jeg har bygget siden op i en stor tabel, som så indeholder en masse andre tabeller?
Ville det være bedre at bygge den op i nogle div's eller nogle flere tabeller?
Response.Buffer er som udgangspunkt sat til true i ASP 3.0, så der behøver ikke være noget synligt kode som sætter dette.
Det har helt klart en betydning om du har det hele liggende i én tabel eller om du har delt tingene op. En tabel kan først renderes i browseren når den bliver lukket med </table>. Dette kan f.eks. forsinkes af at en server involveret i levering af data til opbygningen af siden (f.eks. scripts), er langsom til at levere disse.
Du kan prøve at holde øje med progressbaren i bunden af browseren, for at se om browseren venter på svar fra serveren hele tiden, eller om den melder klar (så må man forvente at det er browseren på klienten der forsøger at rendere siden).
Hvad der er bedst afhænger i høj grad af, hvad du selv formår. Det giver jo ikke nogen mening at kaste sig ud i CSS-layouts, hvis du ikke magter at løse de udfordringer du så skal tage op i den forbindelse. Hvis du vil bruge tables, så vil jeg da anbefale at du ikke lægger elementer ind i dine tabelceller, som kan risikere at tage meget lang tid at "gøre færdige" i forbindelse med redering af siden (f.eks. pagecounters eller scripts til statistikservere - disse kan til tider være overbelastede og dermed sinke din side).
Hej igen Jeg har faktisk brugt dagen i dag på at kigge lidt på min "grundopbygning", og det har hjulpet vildt meget, at jeg har skiftet min hovedtabel ud med en DIV, lige som det har hjulpet at få mange af de store tabeller skiftet ud med div's :-)
Jeg har fortsat en række mindre tabeller på mange af mine sider, men det er knap så kritisk, som at have det omsluttet af en stor tabel.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.