Question

Il y a eu quelques questions qui traitaient en quelque sorte de cette question mais ne couvraient pas ma question exacte, alors allons-y.

Pour les paramètres de site, s'ils sont stockés dans une base de données, est-ce que vous:

  1. récupérez-les à partir de la base de données 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 de site?

Toute orientation / meilleure pratique serait grandement appréciée.

A bientôt

Était-ce utile?

La solution

Je préfère une approche comme celle proposée par Glomek ... La mise en cache des paramètres dans WebCache augmentera 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 bénéficiez de la qualité du chargement dynamique, de la conservation de la mémoire lorsque vous jetez des éléments hors du cache après 2 heures d'inutilisation, ainsi que du vidage et du rechargement dont vous avez besoin lorsque les paramètres sont modifiés.

Autres conseils

Je suggère de créer un module permettant de récupérer les préférences pouvant être implémentées de l'une ou l'autre manière, puis, lors de votre première implémentation, accédez à la base de données à chaque fois, car cela est plus facile. Si vous rencontrez des problèmes de performances, ajoutez une mise en cache au module pour réduire le trafic de la base de données.

En règle générale, je placerais les paramètres de site dans le fichier web.config. À moins que vous ne construisiez une application comportant plusieurs sites et fréquemment modifiée par l'application elle-même, il ne serait généralement pas logique de la placer dans la base de données au début. .

Pour les paramètres spécifiques à l'utilisateur, je commencerais par le fournisseur de profil par défaut asp.net, qui stockera les paramètres dans la base de données et gérera la retranscription des paramètres utilisateur une fois par demande et enregistrera les mises à jour à la fin pour minimiser le nombre. des appels de base de données. Une fois que vous commencez à rencontrer des problèmes de performances, vous pouvez envisager d'étendre le fournisseur de profil à la mise en cache et / ou à vos besoins spécifiques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top