HttpContext.Cache에 대한 자세한 설명
10466 단어 문맥
1. 둘 다 키-값 쌍을 사용하여 객체를 저장합니다.
2. 둘 다 동일한 수명 주기를 갖는 애플리케이션(캐시가 캐시 정책을 설정하지 않은 경우)
1. 잠금 방법: 응용 프로그램은 잠금 및 잠금 해제를 사용하여 더티 작업을 제어합니다.
캐시 내부 자동 잠금 및 고효율
우리는 간단한 비교를 수행합니다. 테스트는 999999번 읽습니다. 이것은 단일 스레드일 뿐입니다.
public void ApplicationTime()
{
for (int i = 0; i < 999999; i++)
{
var s = HttpContext.Application["Name"];
}
}
public void CacheTime()
{
for (int i = 0; i < 999999; i++)
{
var s = HttpContext.Cache["Name"];
}
}
//
// GET: /Home/
public ActionResult Index()
{
HttpContext.Application["Name"] = "张三";
HttpContext.Cache["Name"] = "张三";
Stopwatch swApplication= new Stopwatch();
swApplication.Start();
ApplicationTime();
swApplication.Start();
var applicationLong= swApplication.ElapsedMilliseconds;
Stopwatch swCache = new Stopwatch();
swCache.Start();
CacheTime();
swCache.Start();
var cacheLong = swCache.ElapsedMilliseconds;
응용 프로그램 긴: 1373 캐시 긴: 925
하나의 쓰레드는 너무 많은 문제를 설명할 수 없습니다. 멀티 쓰레드를 살펴보겠습니다.
public List<Thread> applicationThreads = new List<Thread>();
public List<Thread> cacheThreads = new List<Thread>();
public void ApplicationTime()
{
for (int i = 0; i < 19999; i++)
{
var s = HttpContext.Application["Name"];
}
applicationThreads.Remove(Thread.CurrentThread);
}
public void CacheTime()
{
for (int i = 0; i < 19999; i++)
{
var s = HttpContext.Cache["Name"];
}
cacheThreads.Remove(Thread.CurrentThread);
}
public void CachePool()
{
Stopwatch stopwatch=new Stopwatch();
stopwatch.Start();
while (cacheThreads.Count > 0)
{
}
stopwatch.Stop();
var time = stopwatch.ElapsedMilliseconds;
}
public void ApplictionPool()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (applicationThreads.Count > 0)
{
}
stopwatch.Stop();
var time = stopwatch.ElapsedMilliseconds;
}
//
// GET: /Home/
public ActionResult Index()
{
HttpContext.Application["Name"] = "张三";
HttpContext.Cache["Name"] = "张三";
for (int i = 0; i < 100; i++)
{
Thread threadApplication = new Thread(ApplicationTime);
threadApplication.Name = "Application" + i;
applicationThreads.Add(threadApplication);
threadApplication.Start();
}
Thread applicationPool = new Thread(ApplictionPool);
applicationPool.Start();
for (int i = 0; i < 100; i++)
{
Thread threadCache = new Thread(CacheTime);
threadCache.Name = "Cache" + i;
cacheThreads.Add(threadCache);
threadCache.Start();
}
Thread cachePool = new Thread(CachePool);
cachePool.Start();
return View();
}
100개의 스레드를 시작했고 각 스레드는 캐시를 19999번 읽습니다. 애플리케이션: 37, 캐시: 8; 읽기 횟수가 증가하면 격차는 더 커집니다.
2. 다른 캐시 종속성 전략을 설정할 수 있습니다.
string path = Server.MapPath("/Test/Power.xml");
CacheDependency cacheDependency=new CacheDependency(path);
HttpContext.Cache.Insert("power", "权限", cacheDependency);
Power.xml 파일이 변경되었습니다. 캐시가 잘못되었습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
논리의 공통화는 상하문에 달려 있다논리의 공통화를 고려했기 때문에 기재했습니다. 이 보도에 나타난 논리는 프로그램 코드의 전체 집합이다. HTML 및 php 메서드는 로직으로 기록됩니다. 같은 논리라고 쉽게 공통화할 수 없다. 상하문, 존재와 의미가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.