Pregunta

Hubo un par de preguntas que trataron esto, pero no cubrieron mi pregunta exacta, así que aquí vamos.

Para la configuración del sitio, si están almacenados en una base de datos, haga lo siguiente:

  1. recuperarlos de la base de datos cada vez que alguien hace una solicitud
  2. almacenarlos en una variable de sesión en el inicio de sesión
  3. ???????

Para la configuración específica del usuario, ¿hago lo mismo que la configuración del sitio?

Cualquier orientación / mejor práctica sería muy apreciada.

Saludos

¿Fue útil?

Solución

Prefiero un enfoque como el que Glomek propone ... Guardar en caché la configuración en WebCache mejorará enormemente la velocidad de acceso. Considera lo siguiente:

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

Obtendrá la bondad de carga dinámica, la conservación de la memoria de los elementos lanzados fuera del caché después de 2 horas de inactividad y el vaciado y recarga que necesita cuando se modifican las configuraciones.

Otros consejos

Sugiero crear un módulo para recuperar preferencias que puedan implementarse de cualquier manera, y luego, para su primera implementación, visite la base de datos cada vez que sea más fácil. Si tiene problemas de rendimiento, agregue almacenamiento en caché al módulo para reducir el tráfico de la base de datos.

En general, pondría la configuración del sitio en el archivo web.config, a menos que esté creando una aplicación que tenga múltiples sitios y que la aplicación misma cambie con frecuencia, por lo general no tendría sentido colocarla en la base de datos al principio. .

Para la configuración específica del usuario, buscaría comenzar con el proveedor de perfiles asp.net predeterminado, que almacenará la configuración en la base de datos y administrará la recuperación de la configuración del usuario una vez por solicitud y guardará las actualizaciones hasta el final para minimizar el número. de llamadas DB. Una vez que comience a tener problemas de rendimiento, puede considerar la posibilidad de ampliar el proveedor de perfiles para el almacenamiento en caché y / o sus necesidades específicas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top