2013-02-04 1 views
0

캐시 된 항목의 항목을 특정 시간에 매일 한 번씩 11:59:59 pm에 삭제해야합니다.
캐시에 특정 기간 동안 사용할 수있는 absoluteExpiration 속성이 있다는 것을 알고 있습니다.
나는 캐시매일 특정 시간에 캐시 항목을 삭제하는 방법

public static Collection<CProductMakesProps> GetCachedSmartPhoneMake(HttpContext context) 
    { 
     var allMake = context.Cache["SmartPhoneMake"] as Collection<CProductMakesProps>; 
     if (allMake == null) 
     { 
      allMake = new CModelRestrictionLogic().GetTopMakes(); 
      context.Cache.Insert("SmartPhoneMake", allMake, null, 
      DateTime.Now.AddHours(Int32.Parse(ConfigurationManager.AppSettings["MakeCacheTime"])), 
      Cache.NoSlidingExpiration); 
     } 
     return allMake; 
    } 

의 값을 설정하려면 다음 코드를 사용하고 그러나 캐시가 만료되는 때 정확한 시간을 설정하는 방법에 대해 설명합니다.
manipulate 시간 변수가 필요하고 time difference을 계산하고 absoluteExpiration을 설정하거나 다른 방법이 있습니다.

+0

시간차를 계산하고 absoluteExpiration을 설정하십시오 – user2031802

답변

0

은 내가이 나에게 내 기능에 사용되는 double 값을 제공

private static double GetTimeLeft() 
    { 
     //create a time stamp for tomorow 00:10 hours 
     var tomorrow0010Minute = DateTime.Now.AddDays(1).Date.AddMinutes(10); 
     return Math.Round((tomorrow0010Minute - DateTime.Now).TotalHours); 
    } 

다음과 같이 함수를 만든 방법을 발견 :)

0

이 답변을 확인하십시오. ASP.NET 타이머 컨트롤을 사용하여 특정 시간대에 이벤트를 발생시킵니다. 이 값을 config 항목으로 유지하는 것이 좋습니다. 또한 거기에 다른 제안이 있습니다.

public static Collection<CProductMakesProps> GetCachedSmartPhoneMake(HttpContext context) 
{ 
    var allMake = context.Cache["SmartPhoneMake"] as Collection<CProductMakesProps>; 
    if (allMake == null) 
    { 
     allMake = new CModelRestrictionLogic().GetTopMakes(); 
     context.Cache.Insert("SmartPhoneMake", allMake, null, 
     DateTime.Now.AddHours(GetTimeLeft()), 
     Cache.NoSlidingExpiration); 
    } 
    return allMake; 
} 

하고 완료를 따를 때

How to use the .NET Timer class to trigger an event at a specific time?

+0

실제로 내 제안은 absoluteExpiration만을 사용하여 답을 주셔서 감사합니다 –

+0

. 그러나 그것은 나를 도울 것입니다. –

+0

예, 타이머 이벤트에서 캐시를 무효화/새로 고침/다시로드/델타합니다. –