webForumDet fria alternativet

Hämta SAMMA data från databasen?

.NET

4 svar · 406 visningar · startad av Claysson

Medlem sedan jan. 200454 inlägg
Frågan#1

Jag sitter med en website som har en databasdriven vänstermeny (usercontrol). I mitten på min website har jag en PlaceHolder som jag laddar med UserControls. Varje gång jag laddar "mitten"sidan med en ny UserControl, så hämtas återigen vänstermenyn om SAMMA data från databasen.

Detta känns slöseri med resurser att den går och hämtar om datan. Det borde gå att utnyttja PostBack´ens kraftfulla styrka?

Kanske går att ordna med "AutoPostBack" på något sätt, men har inte klurat ut något bra med länkarna. Någon som kan visa mig till rätta?

Om man tänker i gamla vanliga banor med HTML så skulle detta kunna lösas med "Frames", men det känns juh inte direkt aktuellt :OO

Mvh

Medlem sedan juli 2004206 inlägg
#2

Skriv in detta längst uppe i din usercontrol:

<%@ OutputCache Duration="300" VaryByParam="None" %>

..så blir din usercontrol cachead i 300sekunder. Välj valfri tid... =)

Du kan mixa och sätta olika cachningstider för olika usercontrols eller hela sidor.

Medlem sedan jan. 200454 inlägg
#3

Tackar för tipset. Någon som har en bra sida om ämnet eller vill själv reflektera med för och nackdelar och varningar får ni gärna fortsätta i denna tråden.

I mitt fall har jag alltså en databasdriven meny som inte ändras ofta, men jag vill ändå ha det dynamiskt.

ps. min fråga är då om det är lönt att cacha menyn eller inte?

Medlem sedan juli 2004206 inlägg
#4

Ja. Om du sätter cachningen till exempelvis 30minuter så sker endast 2 slagningar mot databasen per timme (för menyn). Alla besökare därefter får serverns cachade output från usercontrollen. Det är att rekomendera att man cachear data som inte förändras mycket eller är unikt per user.

Notera propertyn VaryByParam="None". Du kan alltså bestämma att vilka queryparametrar i anropet till denna sida ska få en egen cache per värde.

Anta att du har en inparameter som heter userid. Om du skriver VaryByParam="userid" och sedan har ett anrop som är typ https://www.test.se/sida.aspx?userid=s76h89k3n7 så lagras det en cache per värde som servern får, exempelvis menyn för "userid=s76h89k3n7" får en egen unik cachad version på servern.. Väldigt smart...

Medlem sedan jan. 200454 inlägg
#5

Tackartackar.. kommer definivt läsa vidare i ämnet..

247 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)