webForumDet fria alternativet

user/roleprovider cache?

4 svar · 552 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

Tänkte höra hur vida en sån här funktion cachas : Roles.GetRolesForUser("username")

Vad jag förstår så kommer resultatet "direkt" ifrån databasen. Men eftersom att den bara returnerar en string() så borde det väl gå att cacha resultatet så slipper sql-frågan göras varje gång jag kallar funktionen eller har jag fel?

emissionMedlem sedan dec. 19996 721 inlägg
#2

Nej, det cachas inte. GetRolesForUser är gjord för att bara köras en gång per inloggning (tilldelning av de roller som sedan kan kollas med User.IsInRole). Vill man använda den mer så får man leva med att providern anropas varje gång. Vill du ha cachning får du bygga en egen RoleProvider (ärv/wrappa in den provider du använder)

TravoniMedlem sedan okt. 20041 556 inlägg
#3

Ok, men jag hittade i web.config / roleprovidern att det fanns en egenskap som hette cacheRolesInCookie.
Är det något annat?

emissionMedlem sedan dec. 19996 721 inlägg
#4

Ja, det cachar de värden som hämtas så att IsInRole inte behöver anropa GetRolesForUser varje gång. Själva GetRolesForUser har dock ingen cachning, så om du anropar den manuellt så kommer databasen att anropas.

TravoniMedlem sedan okt. 20041 556 inlägg
#5

Aha, då är det IsInRole jag skall använda. Tack!

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)