[ASP/Disc] Volgorde van uitvoeren code

Pagina: 1
Acties:

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Hallo,

Ik ben nu al een behoorlijke tijd met "normaal" ASP/VBscript bezig en heb er behoorlijk wat over gelzen etc.

Nu heb ik een collega waarmee ik niet helemaal eens ben over de volgorde van executie van een pagina. Nu begon ik dan ook te twijfelen of ik gelijk had en leg het daarom even aan jullie voor:

discussie punt:

Het is netjes om een Response.Flush en Response.End na een Response.Redirect te doen...

Mijn mening:

Die response.flush en response.end worden niet eens uitgevoerd, simpel te testen door een response.write voor de response.flush te plaatsen.

Heb ik gelijk?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
4of9 schreef op vrijdag 11 februari 2005 @ 11:35:
<knip>simpel te testen door een response.write voor de response.flush te plaatsen.

Heb ik gelijk?
Je beantwoordt je eigen vraag al :? Test het gewoon?
Ik zie er verder overigens het nut niet van in: Je roept tegen de browser dat 'ie maar een andere pagina moet gaan ophalen, en daarna stuur je nog een bult data die de browser toch negeert omdat 'ie een andere pagina is gaan opvragen....Of je dat nou flushed of niet, who cares?

Bij mijn weten wordt code na een .redirect WEL nog uitgevoerd, je stuurt immers gewoon HTTP-headers naar de browser die 'm vertellen dat 'ie z'n heil maar ergens anders moet gaan zoeken. Dat wil niet zeggen dat je server-side niet gewoon kunt doorgaan met executen. Het heeft alleen zo weinig nut nog iets naar de browser te sturen. Maar als je na de .redirect nog dingen in je DB gaat zitten frotten ofzo, dan is het andere koek.

Kijk ook eens naar .Transfer.

[ Voor 78% gewijzigd door RobIII op 11-02-2005 11:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Mijn probleem is dat ik nog nooit ergens gezien of gelezen heb dat je een flush en een end na een redirect moet doen laat staan dat je code uit gaat (kan) voeren.

Het is ook niet de bedoeling om nog code uit te gaan voeren, maar ik wil gewoon weten hoe het nu werkt in de praktijk.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
4of9 schreef op vrijdag 11 februari 2005 @ 11:57:
Mijn probleem is dat ik nog nooit ergens gezien of gelezen heb dat je een flush en een end na een redirect moet doen laat staan dat je code uit gaat (kan) voeren.

Het is ook niet de bedoeling om nog code uit te gaan voeren, maar ik wil gewoon weten hoe het nu werkt in de praktijk.
Een .Flush stuur je als je Response.Buffer = True hebt staan. Dan dien je "handmatig" de buffer te flushen of te wachten tot de hele page ge-execute is.
The server will not send output until all of the scripts on the page have been processed, or until the Flush or End method has been called.
Zie ook: http://www.w3schools.com/asp/met_flush.asp of http://www.15seconds.com/issue/010220.htm

[ Voor 22% gewijzigd door RobIII op 11-02-2005 12:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

4of9 schreef op vrijdag 11 februari 2005 @ 11:57:
laat staan dat je code uit gaat (kan) voeren.

Het is ook niet de bedoeling om nog code uit te gaan voeren, maar ik wil gewoon weten hoe het nu werkt in de praktijk.
Dat is natuurlijk onzin, waarom zou je geen code meer uit mogen voeren na een redirect? Een client heeft natuurlijk niets te maken met jouw code, en als jij besluit na een redirect nog wat code uit te voeren dan is dat jouw keuze. Misschien dat er nog het een en ander aan opruimwerk moet gebeuren, of zijn er nog andere dingen die nog even af moeten.

Output sturen na een redirect is een heel ander verhaal, want waarom zou je dat doen als dat toch genegeerd gaat worden. Of het "fout" is laat ik in het midden, maar waarom zou je de client moeten laten wachten op iets waarin ie toch niet geinteresseerd is? Het is dus wel zo netjes om gewoon geen output meer te sturen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
oke, ben ik al weer iets wijzer :)

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Ik zag dit topic, omdat ik een zelfde vraag had en wil toch nog even reageren op dit topic. Je script stopt namelijk wel na een response.redirect. Dat heb ik als volgt getest:
ASP:
1
2
3
4
5
6
7
8
9
10
11
<%
If request.querystring("redirect") <> "" Then
    response.redirect request.querystring("redirect")
End If

Dim fso, a
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set a = fso.CreateTextFile("testfile.txt", True)
a.WriteLine("This is a test.")
a.Close
%>

Indien je aan de redirect var een URL meegeeft blijkt dat de testfile.txt niet wordt aangemaakt. Alleen erg verwarrend dat hier niets over te vinden is in de MSDN docs bij response.redirect.

It’s nice to be important but it’s more important to be nice

Pagina: 1