ASP.NET 코어 응답 캐싱
ASP.NET Core는 다음과 같은 기능을 제공합니다. 응답 캐싱 이를 통해 향후 요청에 대한 클라이언트 요청의 서버 응답을 캐시할 수 있습니다. NCache 이 시스템은 로컬 메모리 캐싱의 한계를 극복하기 위해 분산 응답 캐시 제공자 역할을 하며, 로드 밸런싱된 웹 팜 전반에 걸쳐 일관된 콘텐츠 전달을 보장합니다.
고급 응답 캐싱 옵션
주의 사항
이 기능은 다음에서만 사용할 수 있습니다. NCache 5.2 앞으로.
캐시된 ASP.NET Core 응답은 언제 무효화해야 할까요?
제공된 기술은 NCache 캐시 데이터를 최신 상태로 유지하고 오래된 데이터를 제거하는 것은 데이터 무효화입니다. 응답이 캐시되고 언제든지 해당 페이지의 데이터가 변경되어 다른 데이터에 영향을 미치는 경우 캐시는 강제로 새 데이터를 가져옵니다. 예를 들어, 전자 상거래 웹사이트의 장바구니에서 항목을 성공적으로 제거하면 장바구니에 변경 사항이 반영되어야 하므로 데이터가 무효화됩니다.
무효화 태그는 관찰 가능한 데이터와 함께 추가되며 캐시에서 유효하지 않거나 오래된 데이터를 제거하는 역할을 합니다. 그런 다음 무효화된 데이터에 대해 데이터베이스에서 새 데이터를 가져옵니다. 데이터 업데이트 성공 페이지에 대해 데이터 무효화 태그를 True로 설정하면 캐시에 캐시된 모든 응답이 무효화되어 캐시에서 새로운 응답을 얻습니다.
사전 조건
ASP.NET Core 응답 캐싱을 사용하기 전에 NCache다음 전제 조건이 충족되었는지 확인하십시오.
- 다음 NuGet 패키지를 애플리케이션에 설치하십시오. NCache 판:
- 활용하기 위해 NCache응답 캐싱을 위한 메서드를 사용하려면 애플리케이션에 다음 네임스페이스를 포함하십시오.
- 캐시가 실행 중이어야 합니다.
- 신청서는 다음과 같아야 합니다. 캐시에 연결 작업을 수행하기 전에.
- API 세부 정보는 다음을 참조하세요. 추가NCache응답캐싱서비스, NCache구성.
- 추가되는 데이터가 직렬화 가능.
응답 캐싱 서비스 구성
ASP.NET Core는 응답 캐싱을 위한 자체 미들웨어를 제공합니다. 이 미들웨어는 서비스 컬렉션에 추가해야 합니다. AddResponse캐싱 방법.
엽니다 Startup.cs 프로젝트의.
.
ConfigureServices메소드에 다음 서비스를 추가하십시오.
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
// Remaining services here
}
주의 사항
작업이 안전하도록 하려면 에 설명된 대로 응용 프로그램 내에서 잠재적인 예외를 처리하는 것이 좋습니다. 처리 실패.
구성 NCache 분산 캐시로
NCache ASP.NET 애플리케이션을 위한 분산 캐시로 자체 구성하는 사용자 지정 방법을 제공합니다. 여기에는 캐시 이름만 필요합니다. NCache MVC 콘텐츠를 저장하기 위한 선택적 구성입니다. 구성을 위해 다음 방법을 지정합니다.
캐시 구성을 지정하세요 앱 설정.json
캐시 구성은 별도의 섹션으로 추가할 수 있습니다. 앱 설정.json 당신의 응용 프로그램의. 다음 예는 섹션을 추가합니다. NCacheSettings 캐시 이름을 구성합니다. 등록된 캐시에 따라 이름을 변경할 수 있습니다. 캐시 이름을 추가한 후 데이터베이스 종속성을 추가하기 위해 서버와 연결하기 위한 연결 문자열 이름이 포함된 기본 연결 문자열 이름을 제공할 수 있습니다. 여러 데이터베이스에 대한 연결 문자열이 여러 개인 경우 기본 연결 문자열에 따라 사용할 데이터베이스 이름이 결정됩니다. 각 연결 문자열에는 아래와 같은 이름이 있어야 합니다.
중대한
지정된 캐시가 실행 중인지 확인하십시오.
. . .
"NCacheSettings": {
"CacheName": "demoCache",
"EnableLogs": "True",
"ExceptionsEnabled": "True"
"DefaultConnectionStringName": "DBServer1"
},
"ConnectionStrings": {
"DBServer1": "Data Source=20.20.20.40 \\SQLEXPRESS;Database=Northwind;User Id=admin;password=xxxxxxxx"
}
. . .
캐시 구성이 지정되면 NCache 구성하려면 서비스를 추가해야 합니다. NCache 응용 프로그램의 분산 캐시로.
엽니다 Startup.cs 프로젝트의.
.
ConfigureServices메서드에 다음 서비스를 추가합니다.The
AddOptions.Configure<NCacheConfiguration>확장 메서드는 런타임에 호출됩니다. 이 방법을 사용하여 컨테이너에 서비스를 추가할 수 있습니다.The
AddNCacheResponseCachingServices확장 메서드는 데이터베이스 종속성 및 무효화와 관련된 구성을 초기화합니다. 앱 설정.json.
public void ConfigureServices(IServiceCollection services)
{
// Read NCache specific configurations from app.settings.json
services.AddOptions().Configure<NCacheConfiguration>(Configuration.GetSection("NCacheSettings"));
// Register NCache for response caching with dependency or invalidation
services.AddNCacheResponseCachingServices();
}
추가 NCache 뷰 클래스에 대한 분산 캐시 태그 도우미
앞서 언급했듯이 캐시에 있는 데이터에 데이터베이스 종속성을 추가하려면 태그를 사용하세요. <distributed-cache-ncache> 매개변수를 지정하는 데 사용됩니다. 이 태그는 분산 태그 도우미 클래스에서 파생되며 이 클래스의 속성을 상속합니다. 이것을 따르십시오 선적 서류 비치 지정 가능한 속성에 대한 자세한 정보를 얻으려면.
NCache 종속성을 추가하기 위해 이 클래스에 다음 속성을 제공합니다.
<name>: 고유 식별자로 캐시에 있는 항목의 키입니다.<depends-on>: 응답이 의존하는 데이터베이스에서 항목을 선택하는 쿼리입니다. 쿼리 형식에는 캐시된 응답으로 리디렉션되는 변수인 매개변수 이름이 포함되어 있습니다. 매개변수 이름은 대소문자를 구분할 수 있지만 캐시된 응답의 매개변수 이름과 일치해야 합니다. 마찬가지로 매개변수화된 쿼리의 경우 매개변수 이름 앞에 "@@"이 추가됩니다. 예를 들어 종속성이 개인 ID에 추가된 경우 매개변수 이름은 종속 페이지와 응답 페이지에서 일관되어야 합니다.<dependency-type>: 이는 어떤 유형의 데이터베이스 종속성이 연결되어 있는지, 즉 Oracle 또는 SQL Server인지를 정의합니다.
주의 사항
이 태그에 기본 연결 문자열 이름을 추가할 수도 있습니다. 여기에 기본 연결 문자열이 추가되지 않은 경우, 앱 설정.json 사용.
<dependency type: "SQLServer" connection-string-name="DBServer">
<invalidates>: 무효화가 속성과 함께 추가된 경우 True로 설정되는 부울 플래그입니다. 플래그를 True로 설정하면 종속 항목에서 변경이 발생하면 해당 키와 관련된 모든 페이지가 무효화됩니다.
다음은 응답과 함께 추가된 SQL 종속성을 보여주는 샘플 파일입니다.
<distributed-cache-ncache
name="key1"
depends-on="SELECT ProductID, ProductName FROM dbo.Products WHERE ProductID = @@id"
connection-string-name="[connection_string_name]"
dependency-type="SQLServer"
invalidates="true">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache-ncache>
뷰에 분산 캐시 태그 헬퍼 추가
일단 NCache 응답 캐싱을 위한 서비스가 구성되었으므로 이제 캐시할 컨트롤러 뷰의 특정 콘텐츠를 지정할 수 있습니다. ASP.NET Core는 다음과 같은 기능을 제공합니다. 분산 캐시 태그 도우미 매개변수가 포함된 태그를 조회수 구성된 캐시에 표시된 콘텐츠를 캐시합니다.
다음 예는 다음을 추가합니다. <distributed-cache> 내용에 태그 조회수 -> 정보.cshtml 다양한 매개변수를 사용합니다. 애플리케이션을 새로 고치면 "일반 아이템"의 내용이 다음과 같이 변경됩니다. DateTime.Now, 태그가 지정된 콘텐츠는 캐시될 때 정적 상태로 유지됩니다.
The
expires-after속성은 콘텐츠의 절대 만료를 지정합니다. 이 항목은 10초가 지나면 캐시에서 제거됩니다. 그러나 애플리케이션을 새로 고치면 항목이 캐시에 다시 로드됩니다.The
name속성은 태그 도우미의 각 인스턴스에 대한 캐시의 고유 식별자입니다.The
vary-by속성은 URL의 쿼리 문자열이 이 태그에 지정된 값과 동일할 때까지 캐시에 항목을 유지합니다.
매개변수에 대한 자세한 내용은 다음을 참조하십시오. 태그 도우미에 대한 Microsoft 설명서 진행하기 전에.
애플리케이션이 실행되면, 다음을 통해 캐시 통계를 모니터링할 수 있습니다. NCache 관리센터/NCache 모니터 NCache 기업.
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
<p> The value for this item will change every time the application is refreshed.</p>
<div>@DateTime.Now.ToString()</div><br />
<p>The value for this item will be static and remain in the cache forever, unless the cache is cleared.</p>
<distributed-cache name="Key:1" >
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static upon refreshing the application, but it will expire after 10 seconds.</p>
<distributed-cache name="Key:2" expires-after ="TimeSpan.FromSeconds(10)">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static and will only be removed from cache if the "vary-by" value is changed.</p>
<distributed-cache name="Key:3" vary-by ="test">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
추가 자료
NCache 응답 캐싱을 위한 샘플 애플리케이션을 제공합니다. GitHub의.
도 참조
.그물: Alachisoft.NCache.Response캐싱 네임 스페이스.