Domanda

Ci sono state un paio di domande che in qualche modo si sono occupate di questo, ma non riguardano la mia domanda esatta, quindi eccoci qui.

Per le impostazioni del sito, se queste sono archiviate in un database:

  1. recuperali dal db ogni volta che qualcuno effettua una richiesta
  2. memorizzali in una variabile di sessione all'accesso
  3. ???????

Per le impostazioni specifiche dell'utente faccio lo stesso delle impostazioni del sito ??

Qualsiasi orientamento / migliore pratica sarebbe molto apprezzato.

Saluti

È stato utile?

Soluzione

Preferisco un approccio come Glomek propone ... La memorizzazione nella cache delle impostazioni nella WebCache migliorerà notevolmente la velocità di accesso. Considera quanto segue:

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

Otterrai la bontà del caricamento dinamico, la conservazione della memoria del lancio degli oggetti dalla cache dopo 2 ore di inattività, e il flush e il ricaricamento necessari quando le impostazioni vengono modificate.

Altri suggerimenti

Suggerisco di creare un modulo per recuperare le preferenze che potrebbero essere implementate in entrambi i modi, e quindi per la tua prima implementazione colpire il database ogni volta poiché è più facile. In caso di problemi di prestazioni, aggiungere la memorizzazione nella cache al modulo per ridurre il traffico del database.

Generalmente inserirei le impostazioni del sito nel file web.config, a meno che non si stia creando un'applicazione che ha più siti e venga frequentemente modificata dall'applicazione stessa, di solito non avrebbe senso inserirla inizialmente nel database .

Per le impostazioni specifiche dell'utente esaminerei a partire dal provider di profili asp.net predefinito che memorizzerà le impostazioni nel database e gestirà il ripristino delle impostazioni utente una volta per richiesta e salverà gli aggiornamenti alla fine per ridurre al minimo il numero di chiamate DB. Una volta che inizi a riscontrare problemi di prestazioni, puoi prendere in considerazione l'estensione del provider di profili per la memorizzazione nella cache e / o le tue esigenze specifiche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top