Pergunta

Recentemente tenho investigado as possibilidades de cache no ASP.NET.

Rolei meu próprio "Cache", porque não conhecia nada melhor, ficou mais ou menos assim:

public class DataManager
{

      private static DataManager s_instance;

      public static DataManager GetInstance()
      {
      }

      private Data[] m_myData;
      private DataTime m_cacheTime;

      public Data[] GetData()
      {
            TimeSpan span = DateTime.Now.Substract(m_cacheTime);

            if(span.TotalSeconds > 10)
            {
                  // Do SQL to get data
                  m_myData = data;
                  m_cacheTime = DateTime.Now;
                  return m_myData;     
            }
            else
            {
                  return m_myData;
            }
      }

}

Assim, os valores são armazenados por um tempo em um singleton e, quando o tempo expira, os valores são renovados.Se o tempo não tiver expirado e for feita uma solicitação dos dados, os valores armazenados no campo serão retornados.

Quais são os benefícios em relação ao uso do método real (http://msdn.microsoft.com/en-us/library/aa478965.aspx) em vez disso?

Foi útil?

Solução

Acho que a máxima “deixe o computador fazer isso;é mais inteligente que você" se aplica aqui.Assim como o gerenciamento de memória e outras coisas complicadas, o computador está muito mais informado sobre o que está fazendo do que você;conseqüentemente, capaz de obter mais desempenho do que você.

A Microsoft teve uma equipe de engenheiros trabalhando nisso e eles provavelmente conseguiram extrair muito mais desempenho do sistema do que seria possível para você.Também é provável que o cache interno do ASP.NET opere em um nível diferente (que é inacessível ao seu aplicativo), tornando-o muito mais rápido.

Outras dicas

O mecanismo de cache do ASP.NET já existe há algum tempo, por isso é estável e bem compreendido.Existem muitos recursos disponíveis para ajudá-lo a aproveitar ao máximo.

Fazer o seu próprio pode ser a solução certa, dependendo de suas necessidades.

A parte difícil do armazenamento em cache é escolher o que é seguro armazenar em cache e quando.Para aplicativos nos quais os dados são alterados com frequência, você pode introduzir alguns bugs difíceis de solucionar com o cache, portanto, tome cuidado.

O cache no ASP.NET é rico em recursos e você pode configurar o cache de maneira bastante granular.

No seu caso (cache de dados), um dos recursos que você está perdendo é a capacidade de invalidar e atualizar o cache se os dados no servidor SQL forem atualizados de alguma forma (Dependência de cache SQL).

http://msdn.microsoft.com/en-us/library/ms178604.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top