vs2010 내 ASP.NET MVC 4 앱에서 출력 캐싱이 작동하지 않는 이유는 무엇입니까?



vs2010 mvc 4 (1)

그래서 OutputCaching이 작동하고있는 것으로 밝혀졌습니다. 테스트하는 나의 방법에는 결함이있었습니다. 응답에 쿠키가 포함되지 않은 경우에만 작업 결과가 캐싱됩니다. 물론 첫 번째 응답에는 ASP.NET 세션이 활성화 된 경우 항상 쿠키가 포함됩니다. 따라서 첫 번째 응답 헤더는 다음과 같습니다.

HTTP/1.1 200 OK
Cache-Control: private, max-age=600
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Tue, 26 Nov 2013 03:48:44 GMT
Last-Modified: Tue, 26 Nov 2013 03:38:44 GMT
Vary: *
Set-Cookie: ASP.NET_SessionId=kbnhk4lphdlcpozcumpxilcd; path=/; HttpOnly
X-UA-Compatible: IE=Edge
Date: Tue, 26 Nov 2013 03:38:44 GMT
Content-Length: 9558

브라우저 또는 테스트 도구가 쿠키를 허용하고 후속 요청에 포함 시키면 동일한 페이지에 대한 다음 요청으로 인해 HTTP 응답 헤더가 생성됩니다.

HTTP/1.1 200 OK
Cache-Control: private, max-age=598
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Tue, 26 Nov 2013 03:48:45 GMT
Last-Modified: Tue, 26 Nov 2013 03:38:45 GMT
Vary: *
X-UA-Compatible: IE=Edge
Date: Tue, 26 Nov 2013 03:38:45 GMT
Content-Length: 9558

응답에 클라이언트 특정 정보가 없으므로 이제 출력을 예상대로 캐시 할 수 있습니다.

따라서 출력 캐싱을 테스트 할 때 후속 요청에서 쿠키를 허용하고 반환 할 수있는 테스트 도구를 사용하는 것이 교훈입니다.

우리는 tinyget 대신 Jmeter를 사용하여 결국 모든 것이 예상대로 작동합니다.

출력 캐싱이 ASP.NET MVC 4 (EPiServer 7) 웹 사이트에서 작동하지 않는 문제가 있습니다.

web.config 에 다음 출력 캐시 프로필이 있습니다.

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="PageOutput" enabled="true" duration="300" varyByParam="*" location="ServerAndClient" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

정적 리소스에 대한 출력 캐싱 구성은 다음과 같습니다.

<caching>
  <profiles>
    <add extension=".gif" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".png" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".js" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".css" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="00:01:00" location="Any" />
    <add extension=".jpg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".jpeg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="00:01:00" location="Any" />
  </profiles>
</caching>

내 컨트롤러는 다음과 같은 출력 캐시 속성으로 꾸며져 있습니다.

[OutputCache(CacheProfile = "PageOutput")]
public class HomePageController : BasePageController<HomePage>
{ ...}

perfmon에서 다음 카운터를보고 있지만 홈 페이지를 방문 할 때 예상대로 증가하지는 않습니다.

  • \ASP.NET Apps v4.0.30319(__Total__)\Output Cache Entries
  • \ASP.NET Apps v4.0.30319(__Total__)\Output Cache Hits

나는 또한 이렇게 tinyget 사용하여 테스트 tinyget .

tinyget -srv:mywebsite -uri:/ -threads:1 -loop:20

어떤 조언을 크게 주시면 감사하겠습니다!





outputcache