2011-09-13 3 views
0

나는 잘 작동하는 ascx 컨트롤을 가지고있다. 그것은 더 큰 aspx 페이지에 포함되어 있습니다. 조각 캐시에 넣으려고 했으므로 맨 위에 적절한 CacheOutput 지시문을 추가했습니다. 그러나 이제 기본 aspx.cs 파일에 대한 컨트롤에는 페이지가 두 번째로로드 될 때 null로 설정된 컨트롤 변수가 있습니다. 이 웹 사이트에 이런 일이 일어날 것이라고 말한 곳이 몇 개 있었지만 컨트롤에 액세스하는 방법을 찾지 못했습니다.ASP.NET 조각 캐시 - 컨트롤이 두 번째로 둥글다.

무엇이 누락 되었습니까?

또한 캐시 된 위치를 제어 할 수 있습니까? 서버가 아닌 브라우저 캐시에 캐시를 만들 수 있습니까?

답변

1

질문 # 1 : 출력 캐싱은 HTML 결과 만 서버에 저장합니다. 상호 작용하거나 사용자 정의 컨트롤에서 코드를 실행하려는 경우 전체 출력 캐싱을 사용할 수 없습니다. 더 낮은 수준의 캐싱, 아마도 데이터베이스 또는 개체 캐싱을 살펴 보거나 전체 출력 캐싱 자체를 사용하지만 외부 사용자 컨트롤이 더 이상 수행하지 않는 다른 사용자 컨트롤을 퍼가기를 원할 수 있습니다.

질문 # 2 : "캐시 된 위치를 제어 할 수 있습니까?" 출력 캐싱을 사용하면 no. 그것은 항상 서버의 캐시를 의미합니다. 그러나 다양한 수준의 캐싱이 있습니다. 하나의 HTML 페이지, CSS 파일 등 브라우저에서 전체 HTTP 응답 만 캐시 할 수 있습니다. 브라우저에서 페이지의 일부만 캐시하지만 나머지 페이지는 동적으로 만들려면 다음을 수행해야합니다. 일종의 JavaScript로 처리하십시오. HTML5 로컬 스토리지 또는 적절한 캐싱 헤더가 있거나 AJAX를 통해 304 수정되지 않은 응답으로 응답합니다.

사이드 노트 : "조각 캐시"라는 용어는 ASP.Net 세계에서 "부분 캐싱"으로 더 자주 언급됩니다.

SO 팁 : 이것들은 두 가지 질문이며, 앞으로 두 가지 개별 질문으로해야합니다. 또한 여기에서 여러 가지 방법으로 문제를 해결할 수 있습니다. 자신이하고있는 일에 더 많은 맥락과 해결하려는 성능 문제를 제공한다면 좀 더 구체적인 해답을 제시 할 수 있습니다.

관련 문제