Frage

Es gibt ein paar Fragen gewesen, die Art mit dieser behandelt, aber nicht meinen genauen Fragen im Zusammenhang mit so hier gehen wir.

Für Website-Einstellungen, wenn diese in einer Datenbank gespeichert sind, tun Sie:

  1. abrufen sie aus der db jedes Mal, wenn jemand eine Anfrage
  2. macht
  3. speichert sie in einem Session-Variable auf login
  4. ???????

Für benutzerspezifische Einstellungen mache ich das gleiche wie Website-Einstellungen ??

Jede Führung / Best Practice würde sehr geschätzt werden.

Prost

War es hilfreich?

Lösung

Ich ziehe ein Ansatz wie Glomek schlägt ... die Einstellungen in der WebCache Caching wird erheblich Zugriffsgeschwindigkeit verbessern. Betrachten Sie das folgende:

    #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; } }

Sie finden die dynamischen Laden Güte, Speichererhaltung bekommen Elemente aus Cache nach 2 Stunden Nichtgebrauch des Werfen und den Flush und laden Sie benötigen, wenn die Einstellungen geändert werden.

Andere Tipps

Ich schlage vor, die Schaffung eines Moduls für Einstellungen abgerufen werden, so oder so umgesetzt werden könnten, und dann für die erste Implementierung getroffen jedes Mal die Datenbank, da das ist einfacher. Wenn Sie Performance-Probleme haben, fügen Sie das Caching auf das Modul den Datenbankverkehr zu reduzieren.

Generell würde ich Site-Einstellungen in der Datei web.config setzen, es sei denn, Sie eine Anwendung erstellen, die mehrere Standorte haben und wird von der Anwendung selbst häufig geändert, es würde in der Regel nicht sinnvoll, es zunächst in der Datenbank zu setzen .

Für benutzerspezifische Einstellungen würde ich schauen Sie in der Standard-asp.net Profil Provider beginnen, die die Einstellungen in der Datenbank gespeichert werden und verwalten die retrival der Benutzer-Einstellungen einmal pro Anfrage und speichern Sie die Änderungen zu Ende, die Anzahl zu minimieren von DB nennt. Sobald Sie zu treffen Performance-Probleme beginnen können Sie erwägen den Profilanbieter für das Caching erstreckt und / oder Ihre spezifischen Bedürfnisse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top