2008-10-28 4 views
1

Il ya eu quelques questions qui ont traité de cette question mais ne couvrant pas ma question exacte alors nous y allons.Meilleur moyen d'accéder aux paramètres de l'utilisateur/site

Pour les paramètres du site, si ceux-ci sont stockés dans une base de données ne vous:

  1. les récupérer à partir du db chaque fois que quelqu'un fait une demande
  2. les stocker dans une variable de session lors de la connexion
  3. ? ??????

Pour les paramètres spécifiques à l'utilisateur, est-ce que je fais la même chose que les paramètres du site?

Une orientation/bonne pratique serait grandement appréciée.

Vive

Répondre

1

Je préfère une approche comme celle proposée par Glomek ... La mise en cache des paramètres dans WebCache améliorera considérablement la vitesse d'accès. Considérez ce qui suit:

#region Data Access 

private string GetSettingsFromDb(string settingName) 
{ 
    return ""; 
} 
private Dictionary<string,string> GetSettingsFromDb() 
{ 
    return new Dictionary<string, string>(); 
} 

#endregion 

private const string KEY_SETTING1 = "Setting1"; 
public string Setting1 
{ 
    get 
    { 
     if (Cache.Get(KEY_SETTING1) != null) 
      return Cache.Get(KEY_SETTING1).ToString(); 

     Setting1 = GetSettingsFromDb(KEY_SETTING1); 

     return Setting1; 

    } 
    set 
    { 
     Cache.Remove(KEY_SETTING1); 
     Cache.Insert(KEY_SETTING1, value, null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(2)); 
    } 
} 

private Cache Cache { get { return HttpContext.Current.Cache; } } 

Vous aurez la bonté de chargement dynamique, la conservation de la mémoire de lancer des articles de cache après 2 heures de non-utilisation, et la chasse d'eau et vous rajoutez besoin lorsque les paramètres sont modifiés.

+0

S'agit-il de paramètres spécifiques à un site ou de paramètres utilisateur individuels? Voulez-vous stocker les paramètres utilisateur dans l'objet Session au lieu du cache ?? – Schotime

+0

Oui, mettre en cache les paramètres spécifiques à l'utilisateur dans Session ... assurez-vous que votre classe wrapper est Serializable à mettre en Session –

0

En général, je mettrais les paramètres du site dans le fichier web.config, à moins que vous construisez une application qui a plusieurs sites et obtient modifié par l'application elle-même souvent, il serait généralement pas judicieux de mettre dans la base de données au début. Pour les paramètres spécifiques de l'utilisateur, je voudrais commencer par le fournisseur de profil asp.net par défaut qui va stocker les paramètres dans la base de données et gérer la réécriture des paramètres de l'utilisateur une fois par demande et enregistrer les mises à jour pour minimiser la nombre d'appels DB. Une fois que vous commencez à rencontrer des problèmes de performances, vous pouvez envisager d'étendre le fournisseur de profil pour la mise en cache et/ou vos besoins spécifiques.

1

Je suggère de créer un module pour récupérer les préférences qui pourraient être mises en œuvre de toute façon, puis pour votre première mise en œuvre a frappé la base de données chaque fois que cela est plus facile. Si vous avez des problèmes de performances, ajoutez la mise en cache au module pour réduire le trafic de la base de données.

Questions connexes