System.Web.UI.WebControls.DropDownList
에서 상속하는 컨트롤을 작성 했으므로이 컨트롤의 앞에 코드가 없지만 여전히 설정하고 싶습니다 OutputCache 지시어. 나는 C# 코드에서 이것을 설정하는 방법이있다. 나는 특히 희망하고있다코드가없는 사용자 지정 컨트롤에서 출력 캐시 지시문을 설정하는 방법
내가이 믿을 수 없을만큼 오래된 질문이지만 여전히 응답의 가치가 실현 VaryByParam
재산
System.Web.UI.WebControls.DropDownList
에서 상속하는 컨트롤을 작성 했으므로이 컨트롤의 앞에 코드가 없지만 여전히 설정하고 싶습니다 OutputCache 지시어. 나는 C# 코드에서 이것을 설정하는 방법이있다. 나는 특히 희망하고있다코드가없는 사용자 지정 컨트롤에서 출력 캐시 지시문을 설정하는 방법
내가이 믿을 수 없을만큼 오래된 질문이지만 여전히 응답의 가치가 실현 VaryByParam
재산
을 복제 할 수 있습니다.
당신이 말하는 것은 사용자 정의 컨트롤이 아니며 사용자 정의 컨트롤입니다. OutputCache로 수행하려는 작업은 컨텍스트 캐시를 사용하여 간단하게 수행 할 수 있습니다. 당신이 데이터를 가져 오는하고있는 DropDownList에 바인딩 코드에서
은 같은 것을 할 : List<Object> listOfObjects = null;
//assuming a List of Objects... it doesn't matter whatever type of data you use
if (Context.Cache["MyDataCacheKey"] == null)
{
// data not cached, load it from database
listOfObjects = GetDataFromDB();
//add your data to the context cache with a sliding expiration of 10 minutes.
Context.Cache.Add("MyDataCacheKey", listOfObjects, null,
System.Web.Caching.Cache.NoAbsoluteExpiration,
TimeSpan.FromMinutes(10.0),
System.Web.Caching.CacheItemPriority.Normal, null);
}
else
listOfObjects = (List<Object>)Context.Cache["MyDataCacheKey"];
DropDownList1.DataSource = listOfObjects;
DropDownList1.DataBind();
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
응답 객체가 같으면 때문에, 단지 부모 페이지의 컨트롤의 속성 아니다 ' 이것은 전체 페이지의 캐시 설정 만 변경합니까? –
대단히 감사합니다! –