서로 다른 ASP의 장단점.NET 캐싱 옵션
최근 ASP에서 애플리케이션 데이터 캐싱에 관한 질문을 했습니다.NET MVC WebAPI application이 새로운 질문으로 이어졌습니다.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 webapi?
내 이전 질문:MVC Web API를 이용한 메모리내 어플리케이션 데이터 캐싱
각 캐싱 기술/방법에는 고유한 기능이 있습니다.이러한 기능은 하나의 애플리케이션 요구사항에서는 불리한 것처럼 보일 수 있지만 다른 애플리케이션 요구사항에서는 유리할 수 있습니다.
즉, 요구사항에 따라 어떤 캐싱 기술과 어떤 기능이 가장 적합한지를 결정할 수 있습니다.
For example, Let us discuss some client side Caching techniques.
MSDN은 우리가 사용할 수 있다고 말합니다.HiddenField이 데이터는 모든 포스트백의 서버에 대한 왕복에 포함되므로 자주 변경되는 데이터를 숨겨진 필드에 소량만 저장합니다.
이 기능의 장점: 클라이언트측 옵션을 사용하여 페이지 정보를 저장하여 서버의 작업량을 줄입니다.
그러나 MSDN은 다음과 같이 분명히 말합니다. 이 접근 방식은 최소한의 보안 지원을 가지고 있습니다.
따라서 보안상의 고려 사항이 있기 때문에 항상 이 기능을 사용할 수도 있고 사용하지 않을 수도 있습니다.
Consider one more exampleConsider one more example:Page Output caching 페이지 출력 캐싱과 페이지 프래그먼트 캐싱의 2가지 타입입니다.
페이지 출력 캐싱은 전체 웹 페이지를 캐싱하며 해당 페이지의 내용이 상당히 정적인 경우에만 적합합니다.페이지의 일부가 변경되는 경우, 정적 섹션을 사용자 컨트롤로 래핑하고 페이지 조각 캐싱을 사용하여 사용자 컨트롤을 캐시할 수 있습니다.
And one last comment on Application.HttpRuntime.cache:
Application캐시가 아니라 글로벌 네임드 값 컬렉션입니다.에 개체를 추가하면Application앱 도메인이 재활용될 때까지 유지됩니다.
- 응용프로그램 변수는 웹 응용프로그램의 모든 사용자 간에 공유되는 변수입니다.
- 응용 프로그램 변수는 정적 변수와 같이 동작하며 웹 응용 프로그램에서 정적 변수가 상태 비저장 상태이기 때문에 정적 변수를 대체합니다.
- 애플리케이션 변수에는 공유 값만 유지되어야 하며, 사용 중이 아닌 즉시 해당 값을 명시적으로 제거해야 합니다.
Cache 수 ASP에서 상당한 성능 향상을 얻을 수 있습니다.자주 요청하는 개체 및 데이터를 캐싱하여 NET 애플리케이션을 지원합니다.Application아니면Cache반.그 동안에Cache클래스는 확실히 훨씬 더 많은 유연성과 제어를 제공합니다. 그것은 단지 증가된 처리량에 있어서 한계적인 이점을 제공하는 것처럼 보입니다.Application캐싱을 위한 클래스입니다.잠재적 이점을 정확하게 측정할 수 있는 테스트 계획을 개발하는 것은 매우 어려울 것입니다.CacheApplication에서 이 기능을 제공하지 않는 것과 반대로 덜 사용되는 개체를 스캐빈징 프로세스를 통해 클래스에 내장된 관리 기능입니다.개발자는 이 경우 결정을 내려야 하며, 프로젝트의 필요성과 편의성, 그리고 프로젝트의 사용 패턴을 기반으로 해야 합니다.자세한 내용은 이 링크를 확인하세요.
각 기술의 기능에 대한 논의와 함께 Asp.net 의 모든 캐싱 기술에 대한 자세한 설명은 이 MSDN 기사를 참조하십시오.
또한 이 두 링크는 다음과 같이 시작하기에 좋은 자료입니다.
- 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/
에 관하여MemoryCacheASP 대 ASP.NET Cache: 이들은 매우 유사한 기능을 제공합니다.ASP에서.NET 4 application, 일반적으로 ASP를 선호합니다.NET 캐시, 다른 이유가 없다면 에 버그가 있기 때문입니다.NET 4, 에 고정되어 있는 것으로 보입니다.NET 4.5.
정적 필드는 만료 정책이 필요 없는 공유 데이터를 저장하는 데 적합합니다.
응용 프로그램 상태는 고전 ASP와 호환되는 잠금 의미를 가진 정적 사전에 지나지 않습니다. 기존의 고전 ASP 코드와 하위 호환성을 위해서만 사용합니다.
Web API를 사용할 때는 항상 HTTP 응답에서 캐싱 헤더를 설정해야 합니다.HttpResponseMessage.CacheControlHeader.
당신의 마지막 선택은 다음과 같은 것이어야 합니다.HttpContext아니면HttpRuntime, 특정 호스트를 연결할 수 있기 때문입니다.웹 API 응용 프로그램은 호스트와 독립적으로 구축되어야 합니다.
언급URL : https://stackoverflow.com/questions/18937855/pros-cons-of-different-asp-net-caching-options
'programing' 카테고리의 다른 글
| C++ 예외는 C 코드를 통해 안전하게 전파됩니까? (0) | 2023.10.31 |
|---|---|
| 런타임에 메서드를 찾을 수 없습니다. (0) | 2023.10.26 |
| MS-SQL에 SHA1()과 동등한 것이 있습니까? (0) | 2023.10.26 |
| 약속을 사용할 때 내부수업 방식이 정의되지 않은 이유는 무엇입니까? (0) | 2023.10.26 |
| PHP에서 Final을 언제 사용할 것인가요? (0) | 2023.10.26 |