Pergunta

Então, eu tenho um processo que é executado à meia-noite que define um ponto de início e fim para um objeto flash. Isso só precisa ser executado uma vez por dia, por isso estou obviamente cache do conjunto de resultados.

No entanto, o problema que eu estou correndo em é que, se os dados ainda está em cache após midnite, não é puxando os dados mais corretos, até que o cache expire.

Basicamente, eu preciso de cache para expirar às 11:59:59 PM, de modo que às 12:00 horas, ele recebe os dados corretos.

Eu estou supondo que um cache de dependência SQL na mesa eu estou puxando os dados do seria o ideal, no entanto Eu nunca configurar isso antes.

Existe uma maneira de dizer o cache para remover um item específico exatamente midnite?

Obrigado rapazes!

- expiração absoluta ---

Eu acho que eu entendi:

DateTime expireWeights = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59, 999);
Cache.Insert("CacheItemName", itemToCache, null, expireWeights, System.Web.Caching.Cache.NoSlidingExpiration);
Foi útil?

Solução

Você pode definir um tempo absoluteExpiration no objeto de cache, que é um DateTime.

Você também pode combinar um absoluteExpiration com um SqlCacheDependency.

Quanto à questão da não puxar os novos dados quando o cache expira:. Você pode conectar um CacheItemRemovedCallback para receber notificação de quando ele expira, e atualizar o cache naquele tempo

Outras dicas

Eu não entendo porque você tem um problema com a expiração absoluta? Você pode indicar a data e hora exata em que o item irá expirar a partir do cache. Por isso, a seguinte linha de código irá inserir "myObject" no cache sob o "MyKey" chave e irá expirar à meia-noite no dia seguinte (independentemente de quando ela enteres o cache).

Cache.Insert("MyKey", myObject, null, DateTime.Today.AddDays(1), TimeSpan.Zero);

Se você olhar aqui , sob "Dependência baseada em Time", ele mostra como definir o item para expirar em um momento específico. É isso que você está procurando?

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