2009-07-15 1 views
2

I는 "제품 정보"를 캐시 할 수 3am에 제 3 자 아무것도 그때까지 내용의 측면에서 변경되지 매일 아침에서 데이터를 다운로드 ...ASP.Net 캐싱

가 가능 응용 프로그램을 가지고 그때까지? 또는 global.asax에서 설정해야하는이 항목입니까?

답변

2

예, 그 때까지 캐시 할 수 있습니다. 이렇게하는 방법은 여러 가지가 있습니다.

데이터를 검색하기 위해 서버 측 호출이있는 경우 처음 데이터를 가져올 때이 데이터를 캐시에 추가하고 만료 날짜를 다음 날 오전 3 시로 설정하면됩니다. 그런 다음 각 페이지 호출에서이 데이터 객체의 캐시를 확인하고 null을 반환하면 다른 데이터 페치를 시작합니다.

페이지 출력 캐싱을 사용할 수도 있지만 이렇게하면 세부적인 제어가 제공되지 않습니다. 이 같은

뭔가 :

if (HttpContext.Current.Cache["MyData"] != null) 
    return HttpContext.Current.Cache["MyData"] as DataObjectClass 

//Get data into dataobject 

HttpContext.Current.Cache.Add(
        "MyData", 
        DataObject, 
        DateTime (tomorrow 3am), // psuedo 
        null, 
        TimeSpan.Zero, 
        System.Web.Caching.CacheItemPriority.Normal, 
        null); 

return DataObject; 
+0

doh! 나는 천천히 타이퍼되는 것을 싫어 : (이것은 내가 할 일이다 :) –

1

해당 페이지 자체에 설정할 수 있습니다. 해당 페이지의 코드 뒤에 :

Response.Cache.SetExpires("put tomorrow's date @ 3AM here"); 
Response.Cache.SetCacheability(HttpCacheability.Public); 
2

또 다른 옵션은 System.Web.Caching.Cache 클래스를 사용하는 것입니다. 데이터를로드 할 때마다 여기에 캐시하고 필요에 따라 검색 할 수 있습니다. 이 클래스는 TimeSpan에 의한 만료를 허용하지만 매일 중요한 특정 시간에 데이터를 다운로드하므로 중요하지 않습니다.

using System.Web.Caching; 
Public Class SomeClass 
{ 
    Public SomeDataCollection GetCachedData() 
    { 
     if(Cache["Key"] == null) //You want to always be sure to check if set 
     Cache["Key"] = GetDataCollectionFromSomewhere(); 

     return Cache["Key"]; 
    } 
} 
0

24 시간마다 제 3 자 데이터를 유지합니다. 캐싱은 데이터가 무엇인지에 달려 있습니다. 추가 처리가 필요한 파일입니까? 그런 다음이를 처리하고 메모리에 캐시하십시오. 그리고 장애 조치는 다음과 같이 진행됩니다 : 메모리 내 캐시, 임시 영구 위치, 타사 위치.