UweMedlem sedan nov. 2003181 inlägg På den websida jag håller på med finns det en del saker som tar väldigt lång tid och i stället för att låta sidan stå och "tugga" tänkt jag att man kan dra igång jobbet och få tillbaka det när det är klart. Tyvärr har jag bara vs2003 tillgängligt.
Finns det några bra tips eller idéer på hur det går att göra?
GladhMedlem sedan maj 20012 812 inlägg När du pratar om websida så finns det bara 2 vägar att gå, den ena enkel, och den andra komplicerad (och i .net 1.1, ännu mer komplicerad).
Variant 1.
Du måste vänta med att presentera sidan tills all data är processad. Det betyder att sidan måste stå och "tugga", du kan dock, om du har flera oberoende anrop (som tar lång tid) lägga dessa parallellt istället för synckront som de blir default.
Säg att du har 10 databasanrop på din sida, varje anrop tar 2 sekunder, synkront är det 20 sekunder, parallellt är det 2 sekunder, men det kräver också att de är oberoende av varandra.
Detta löser du genom att dra igån en ny tråd för varje anrop till databasen som du vill, alltså starta fler trådar och din sida står inte och "tuggar" lika länge...
Varaint 2.
Här blir det komplicerat, för vad du gör nu är helt enkelt att du skötter allt med klientscript-lösningar (typ ajax) det går att lösa i .NET 1.1 men är betydligt mer komplicerat än i .NET 2.0.
Vad du gör är helt enkelt att du låter bli att ladda om sida, utan börjar exekvera ett klientscript för att kalla en webservice som hämtar data från databasen och när den är färdig med det så presenterar den datan på sidan och nästa anrop kan kallas...
Nu så får du istället en sida som successist kommer fyllas på med data efterhand som anropen blir klara. Är du riktigt fiffig, så bygger du en progressbar och visar bara den och när sedan alla anrop är klara så skriver du ut datan och då står din progressbar på 100%.
- M
UweMedlem sedan nov. 2003181 inlägg Tack för din förklaring Gladh!
Jag har kört efter variant 2 där ett javascript kallar på en webservice. Fungerar som jag tänkt mig i IE, men inte i FireFox. Men man kan inte få allt och det får duga tills en uppgradering till 2.0 görs.
/Uwe