Programing

asp.net-mvc의 캐싱

lottogame 2020. 9. 24. 08:12
반응형

asp.net-mvc의 캐싱


asp.net-mvc 사이트에서 가장 데이터베이스가 많은 작업을 캐시하고 싶습니다. 내 연구에서 나는

  • Phil의 블로그에서 도넛 캐싱
  • Kazi 블로그의 캐싱 / 압축 필터
  • Scott Hansleman의 팟 캐스트는 SO에서 사물을 캐시 한 방법에 대한 것입니다.

그러나 나는 그것을 아직 얻지 못했다.
여러 구문에 따라 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")]

참고 URL : https://stackoverflow.com/questions/385986/caching-in-asp-net-mvc

반응형