user/roleprovider cache?

.NET

4 svar · 568 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Trådstart#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?

Medlem 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)

Medlem 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?

Medlem 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.

Medlem sedan okt. 20041 556 inlägg
#5

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

251 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)