asp.net-mvc 사이트에서 가장 데이터베이스가 많은 작업을 캐시하고 싶습니다. 내 연구에서 나는
그러나 나는 그것을 아직 얻지 못했다.
여러 파에 따라 POST 요청을 캐시 할 수 있기를 원합니다. 이러한 구문은 개체에 있습니다. 따라서 다음 요청의 결과를 캐시하고 싶습니다.
public ActionResult AdvancedSearch(SearchBag searchBag)
여기서 searchBag는 선택적 검색 매개 변수를 보유하는 객체입니다. 내 뷰 자체는 가볍지 만 검색 백에 채워지는 필드에 따라 데이터 액세스에 시간이 많이 걸릴 수 있습니다.
내 행동보다는 데이터 레이어에 캐싱해야한다는 느낌이 듭니다.
OutputCache 속성에서 VaryByParam을 어떻게 사용해야합니까?
답변
모델이나 데이터 레이어에도 캐시하는 것을 좋아합니다. 이것은 컨트롤러 / 프레젠테이션에서 데이터를 검색하는 것과 관련된 모든 것을 분리합니다. System.Web.HttpContext.Current.Cache
엔터프라이즈 라이브러리에서 캐싱 애플리케이션 블록을 사용하거나 ASP.NET 캐시에 액세스 할 수 있습니다 . 쿼리에 대한 매개 변수에서 캐시 된 데이터에 대한 키를 만듭니다. 데이터를 업데이트 할 때 캐시를 무효화해야합니다.
답변
또는 HttpContext.Current와 독립적이고 HttpRuntime.Cache에서 캐시에 액세스 할 수 있습니다. 🙂
답변
종종 OutputCaching은 가장 빠르고 효율적일 수 있지만 요구 사항을 충족 할 때만 가능합니다. 틀렸다면 빠르고 효율적으로 사용할 필요가 없습니다! 😉
이 경우 복잡한 캐싱이 필요하기 때문에 데이터 레이어에서의 캐싱이 올바른 것처럼 들립니다. 캐시되는 출력을 제어하는 매개 변수 세트가 간단한 경우 두 가지를 결합 할 수 있습니다.
답변
다음과 같은 출력 캐싱을 사용할 수 있습니다.
[OutputCache(Duration = 10, VaryByParam = "empID")]
public ActionResult GetEmployeeDetail(int empID)
{
Employee e = new Employee();
return Content(e.getEmployeeDetails(empID));
}
또는 웹 구성에서 설정 한 캐시 프로필을 사용할 수 있습니다.
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Admin"
duration="86420" varyByParam="none"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
and use this tag
[OutputCache(CacheProfile="Admin")]
답변
