2011-11-01 2 views
-1

페이지 수준에서 ASP.NET의 변수를 캐시 할 수 있습니까? 즉, 페이지의로드 사이클 동안로드되는 모든 변수를 캐시하고 싶지만 일단 페이지가 완전히로드되면 변수를 덤프해야합니다.ASP.NET의 캐싱 변수

업데이트 : 데이터가 서버에 캐시되기를 원합니다.

+0

단일 페이지에 대한 ViewState, 사용자의 모든 페이지에 대한 세션 –

+0

추론을 설명해 주시겠습니까? –

+0

ViewState와 Session 객체를 사용하는 것에 대해 조금 걱정이됩니다. 요청/응답과 함께 전송 될지도 모르기 때문입니다. 내가 원하는 것은 서버에 데이터를 캐시하는 것이다. – Rafid

답변

3

그것은 소리 :

public class MyPage : Page 
{ 
    private int _classVariable: 

    pageLoad() 
    { 
    _classVariable = 1; 
    } 
} 

내가 뭔가를 분명 누락하지 않는 한

+0

실제로 아무것도 놓치지 않았습니다.하지만 ASP.NET으로 많은 것을하지는 못했습니다 :-) – Rafid

2

page_load에서 선언 된 변수는 해당 프로세스 중에 표시되고 자동으로 제거됩니다.

페이지 수명주기의 다른 상태에서도 필요한 것은 Session 변수 (또는 액세스 위치에 따라 viewstate)에 저장하고 완료되면 제거 할 수 있습니다. 그냥 클래스 수준에서 변수를 선언 등이 필요한 것처럼

Session["value"] = value; 

ViewState["value"] = value; 
+0

Page_Load에서 선언 된 경우 함수가 존재하면 가비지 수집됩니다! 내가 놓친 게 있니? – Rafid

+0

@promather 예, 페이지 수명주기의 여러 단계에서 필요할 경우 세션/viewstate를 사용하여 첫 번째 사용 및 저장에로드하고 완료되면 제거하십시오. 개인적으로, 나는 왜 당신이 첫 번째 장소에서 이것을하려고하는지 의문을 제기합니다. – ChrisBint

+0

페이지의 인프라에 수천 개의 레코드가 데이터베이스에서 가져 오는 문제가 있기 때문에 각 레코드에 대해 레코드를 사용자에게 바인드하도록 원격 서버에 요청하고 있습니다. 사용자가 약 250 명에 불과하기 때문에 250 번과는 달리 수천 번 요청을 할 필요가 없습니다. – Rafid

1

한 사전이 당신 차가운 사용

Page.Items["variableName"] = yourObject; 

모든 컨트롤이나 사용자 정의 컨트롤 또는 페이지에서 액세스 할 수 있으며 전체 페이지 컨트롤 트리

하지만 공유 객체가 필요하지 않거나 개인 필드를 만드는 페이지 코드의 요청마다 필요하면 다음 요청시 기본값으로 설정되며 다른 것으로 변경할 수 있습니다 on Page_Load 이벤트

1

요청 기간 동안 사용할 수있는 current HttpContext의 항목을 캐시 할 수 있습니다.

HttpContext.Current.Items["VariableName"] = value; 

이것은 페이지를 생성하는 수명을 지속 할뿐만 아니라 페이지에 (예를 들어 HTTP 모듈을) 상호 작용을 할 수 있습니다 코드의 다른 부분과 공유 할 수 있습니다.

+0

좋은 해결책이기도합니다. 매우 감사합니다. – Rafid