09. august 2012 - 21:01Der er
4 kommentarer og 1 løsning
Refresh
Hey folkens
Jeg sidder og leger lidt med ASP .Net Har ikke de store erfaring med det endnu, så her kommer et spørgsmål som måske er nemt at svare på :)
Jeg har en side, hvor jeg ønsker brugeren skal oprette en masse personer. Disse bliver lavet til objecter hver gang de trykker på en knap. Når dette sker, så refresh'er siden, hvilket gør at min kollection igen bliver initialiseret.
Er der nogen mulighed for at få siden til at stoppe med at refreshe, eller kan man gøre sådan, at collection kun bliver initialiseret når man indlæser siden første gang?
Jeg har prøvet at lege med Page_Load og Page_Init uden held. Jeg har prøvet at lave en klasse singleton, men så bliver det for alle brugere - det skal kun være for den pågældende person der lige sidder og bruger siden her og nu.
Nu kender jeg ikke vildt meget til ASP.NET, men internettet er det man kalder stateless. Dvs. hver gang du besøger en side eller refresher, sender du en request til den pågældende webserver. Denne request er fuldstændig uafhængig af dine forrige requests.
Du requester en hjemmeside, hvorefter serveren leverer den til din browser, og her slutter dit samarbejde med webserveren. Herefter kender hjemmesiden dig ikke mere, og venter nu bare på nye requests. Så hver eneste gang du requester, bliver objekter af klasser skabt, data hentet ud fra databaser, funktioner kørt igennem osv. Alt sammen forfra igen og igen :)
Derfor benytter man sig ofte af sessions til at gemme små mængder data om besøgende, som for eksempel et objekt der indeholder brugerens userid, username og email, hvis brugeren da er logget ind. Udover dette gemmer man ellers alle disse informationer i en database, og simpelthen skaber objekter ud af data derfra, gang på gang.
Sådan fungerer det når jeg arbejder med PHP, og jeg tror det er en generel ting om webudvikling.
For at identificere om det er "første" gang siden kaldes benyttes ofte property'en IsPostBack (findes på både aspx, og ascx elementer). dvs,. if(!IsPostBack) == første kald!
Herefter har du behov for at gemme din collection på tværs af hvert postback, og her virker viewstate(som du selv fandt frem til) ganske fint. Dog vær opmærksom på at Viewstaten bliver sendt med frem og tilbage til serveren i et hiddenfield på siden, og kan have indflydelse på performance hvis den blir for stor!.
Fik også leget med !IsPostBack men vælger at tjekke på om min collection == null Det giver stort set det samme.
Tak for info omkring performance :)
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.