다른 ASP.NET 캐싱 옵션의 장단점
최근에 ASP.NET MVC WebAPI 응용 프로그램에서 응용 프로그램 데이터를 캐싱하는 방법에 대한 질문을했고 새로운 질문을 받았습니다. ASP.NET에서 사용할 수있는 다양한 캐싱 방법의 장단점은 무엇입니까?
나는왔다 :
메모리 캐시
http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx
정적 멤버 변수 사용 :
private static Northwind.SuppliersDataTable suppliers = null;
신청 상태 :
HttpContext.Current.Application["key"] ="Value"
데이터 캐시 :
HttpRuntime.Cache.Insert( /* key */ "key", /* value */ "value", /* dependencies */ null, /* absoluteExpiration */ Cache.NoAbsoluteExpiration, /* slidingExpiration */ Cache.NoSlidingExpiration, /* priority */ CacheItemPriority.NotRemovable, /* onRemoveCallback */ null);
나는 다른 사람들이 있다고 확신하고 그들은 모두 기술적으로 데이터를 메모리에 저장한다는 것을 알고 있습니다 ... 그래서 ASP.NET MVC 웹 API에 무엇을 사용 해야하는지 아십니까?
나의 이전 질문 : 메모리에 애플리케이션 데이터 캐싱 : MVC Web API
각 캐싱 기술 / 방법에는 고유 한 기능 세트가 있습니다. 이러한 기능은 하나의 응용 프로그램 요구 사항에서는 불리 해 보일 수 있지만 다른 응용 프로그램 요구 사항에서는 유리할 수 있습니다.
즉, 요구 사항에 따라 어떤 캐싱 기술과 어떤 기능이 가장 적합한 지 결정하십시오.
For example, Let us discuss some client side Caching techniques
.
MSDN HiddenField
은이 데이터가 모든 포스트 백에서 서버로의 왕복에 포함되기 때문에 자주 변경되는 적은 양의 데이터 만 숨겨진 필드에 저장할 수 있다고 말합니다 .
이 기능의 장점 : 클라이언트 측 옵션을 사용하여 페이지 정보를 저장하여 서버의 워크로드를 줄입니다.
그러나 MSDN은 다음과 같이 명확하게 말합니다.이 접근 방식은 최소한의 보안 지원을 제공합니다.
따라서 보안 고려 사항도 있으므로 항상이 기능을 사용하거나 사용하지 않을 수 있습니다.
Consider one more example
, Page Output caching
: 페이지 출력 캐싱과 페이지 조각 캐싱의 두 가지 유형입니다.
페이지 출력 캐싱은 전체 웹 페이지를 캐시하며 해당 페이지의 내용이 상당히 정적 인 경우에만 적합합니다. 페이지의 일부가 변경되는 경우 정적 섹션을 사용자 컨트롤로 래핑하고 페이지 조각 캐싱을 사용하여 사용자 컨트롤을 캐시 할 수 있습니다.
And one last comment on
Application
대 HttpRuntime.cache
:
Application
캐시가 아니며 글로벌 명명 된 값 컬렉션입니다. 객체를 추가 Application
하면 appdomain이 재활용 될 때까지 유지됩니다.
- 응용 프로그램 변수는 웹 응용 프로그램의 모든 사용자가 공유하는 변수입니다.
- 애플리케이션 변수는 정적 변수처럼 작동하며 정적 변수는 웹 애플리케이션에서 상태 비 저장이므로 정적 변수를 대체합니다.
- 공유 값만 응용 프로그램 변수에 유지되어야하며 사용하지 않는 즉시 명시 적으로 제거해야합니다.
Cache
: Application
또는 Cache
클래스 에서 자주 요청되는 개체와 데이터를 캐싱하여 ASP.NET 응용 프로그램의 성능을 크게 향상시킬 수 있습니다. 그동안 Cache
클래스는 확실히 훨씬 더 많은 유연성과 제어 기능을 제공합니다, 단지를 통해 처리량 증가의 측면에서 한계 이점을 제공 할 것으로 보인다 Application
캐싱 클래스입니다. Cache
응용 프로그램이이 기능을 제공하지 않는다는 사실과 달리 청소 프로세스를 통해 덜 사용되는 객체 의 클래스 내장 관리의 잠재적 이점을 정확하게 측정 할 수있는 테스트 체계를 개발하는 것은 매우 어려울 것 입니다. 이 경우 개발자는 결정을 내릴 필요가 있으며 프로젝트의 요구 사항과 편의성 및 사용 패턴을 기반으로해야합니다. 이 링크 확인 이상.
각 기술의 기능에 대한 토론과 함께 Asp.net의 모든 캐싱 기술에 대한 완전한 설명을 보려면 이 MSDN 문서 를 참조하십시오 .
또한 다음 2 개의 링크는 시작하기에 좋은 소스입니다.
- http://weblogs.asp.net/pjohnson/httpruntime-cache-vs-httpcontext-current-cache
- http://devshop.wordpress.com/2008/04/10/how-to-choose-from-viewstate-sessionstate-cookies-and-cache/
MemoryCache
ASP.NET 캐시 와 관련하여 : 매우 유사한 기능을 제공합니다. ASP.NET 4 응용 프로그램에서는 일반적으로 ASP.NET 캐시를 선호합니다. 다른 이유가 없다면 .NET 4.5에서 수정 된 .NET 4 버그 때문입니다 .
정적 필드는 만료 정책이 필요하지 않은 공유 데이터를 저장하는 데 적합합니다.
Application state isn't much more than a static dictionary with locking semantics that is compatible with classic ASP - I'd only use it for backwards compatibility with legacy classic ASP code.
When using Web API your first choice for caching should always be to set the caching headers in the HTTP response. HttpResponseMessage.CacheControlHeader
.
Your last options should be anything that depends on HttpContext
or HttpRuntime
, as that will tie you to particular hosts. Web API applications should be built independent of their host.
ReferenceURL : https://stackoverflow.com/questions/18937855/pros-cons-of-different-asp-net-caching-options
'IT TIP' 카테고리의 다른 글
cv :: normalize (_src, dst, 0, 255, NORM_MINMAX, CV_8UC1); (0) | 2021.01.08 |
---|---|
C의 int에 long int를 할당하면 어떻게됩니까? (0) | 2021.01.08 |
Object.observe를 지원하는 브라우저는 무엇입니까? (0) | 2021.01.08 |
어떤 OSS 라이선스와 호환되는 차트가 있습니까? (0) | 2021.01.08 |
Python SQLite에서 데이터베이스 연결을 닫지 않으면 어떻게 되나요? (0) | 2021.01.08 |