이 페이지는 Apigee 및 Apigee Hybrid에 적용됩니다.
Apigee Edge 문서 보기
캐시 정책을 사용하는 경우 캐시 키를 구성하여 캐시된 값 키의 고유성을 보장합니다. 구성 가능한 다른 값과 함께 캐시 키는 투입한 것과 동일한 데이터를 안정적으로 가져올 수 있는 방법을 제공합니다. PopulateCache 정책, LookupCache 정책, InvalidateCache 정책, ResponseCache 정책에서 캐시 키를 사용합니다.
Apigee는 구성 요소의 값(<Scope>
, <CacheKey>
/<Prefix>
, <CacheKey>
/<KeyFragment>
)을 사용하여 캐시 키 값을 구성합니다. 이 값은 캐시의 값과 연결된 식별자입니다. 캐시 키 구성은 모든 캐시 정책에서 동일한 방식으로 작동합니다.
다음 캐시 정책 구성 요소를 사용하여 캐시 키를 만들 수 있습니다.
캐시 구성 요소 | 설명 |
---|---|
<Scope> 또는 <CacheKey> /
<Prefix>
|
<Scope> 또는 <CacheKey> <Prefix> 요소를 사용하여 최종 캐시 키에 적용할 프리픽스를 구성합니다.
<Scope> 는 사전 정의된 값 목록을 열거합니다. <CacheKey> <Prefix> 요소는 <Scope> 를 직접 선택한 고정 값으로 재정의합니다.
|
<CacheKey> /<KeyFragment> |
캐시 항목에 대한 고유 식별자를 지정하기 위해 결합된 하나 이상의 <CacheKey> <KeyFragment> 요소를 사용합니다. KeyFragment 값은 정적 리터럴이거나 변수에서 설정할 수 있습니다.
|
Apigee는 프리픽스 부분과 복합 프래그먼트 부분의 두 부분으로 캐시 키를 구성하여 이중 밑줄로 구분합니다.
PREFIX_PART__FRAGMENT_PART
프리픽스 부분은 <Scope>
요소에 의해 결정되거나 <CacheKey>
<Prefix>
요소가 있는 경우 결정됩니다. 프래그먼트 부분은 각 <KeyFragment>
요소의 각 값으로 구성되며 이중 밑줄로 결합됩니다.
응답 캐시 정책을 사용하면 동의 응답 헤더의 값을 사용하여 이 캐시 키를 추가할 수 있습니다.
<CacheKey> 사용
<CacheKey>
요소는 Apigee가 생성하는 각 캐시 항목의 고유 식별자(키)를 만드는 방법을 구성합니다. Apigee는 캐시된 값을 검색할 때 캐시 키를 사용하여 올바른 값을 찾습니다.
ResponseCache 정책에서 하나의 구성은 캐싱 및 검색 키를 모두 정의합니다. PopulateCache 및 LookupCache 정책에서 각 정책의 <CacheKey>
요소가 동일해야 합니다. 그래야 캐시에서 검색된 값이 해당 입력 값과 일치하게 됩니다.
<CacheKey>
요소는 단일 옵션 <Prefix>
요소 및 하나 이상의 <KeyFragment>
요소를 포함할 수 있습니다. 런타임 시 Apigee는 각 부분에서 확인된 값을 두 밑줄 사이에 연결하여 캐시 키를 구성합니다.
예를 들어 다음 구성은 캐시 키에 사용할 myprefix__hello__world
값을 만듭니다.
<CacheKey> <Prefix>myprefix</Prefix> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey>
다음과 같이 <KeyFragment>
요소에서 변수를 참조하여 동적으로 구성된 캐시 키를 사용하도록 Apigee를 구성할 수 있습니다.
<KeyFragment ref="variable_name"/>
예를 들어 캐시 키 값이 요청 메시지의 Content-Type을 통합하도록 하려면 아래와 같이 작업을 수행합니다.
<KeyFragment ref="request.header.Content-Type"/>
다음 구성을 고려하세요.
<CacheKey> <Prefix>system1</Prefix> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.header.Content-Type" /> <KeyFragment>bar</KeyFragment> </CacheKey>
request.header.Content-Type
변수의 값이 application/json
이면 캐시 키가 system1__apiAccessToken__application/json__bar
가 됩니다.
ref
속성에 플랫폼 정의 변수 또는 커스텀 변수를 사용할 수 있습니다.
쿼리 매개변수에서 파생된 캐시 키
request.queryparam. <queryparam_name> 및 request.querystring과 같은 변수를 사용하여 키에 요청 쿼리 문자열의 일부가 포함되도록 구성할 수 있습니다. 예를 들어 다음 URL은 캐시 키에 사용할 수 있는 두 개의 쿼리 매개변수(param1 및 param2)를 사용합니다.
http://myaccount.apigee.net/mydata?param1=value1¶m2=value2
<CacheKey>
요소는 이러한 값을 다음과 같은 구성과 통합할 수 있습니다.
<CacheKey> <KeyFragment ref="request.queryparam.param1" /> <KeyFragment ref="request.queryparam.param2" /> <CacheKey>
런타임 시 캐시 키에는 아래와 같이 연결된 매개변수 값이 포함됩니다.
prefix_part__value1__value2
여러 개의 고유한 쿼리 매개변수를 지정하는 대신 전체 매개변수 문자열을 문자 그대로 캐시 키의 일부로 삽입하는 request.querystring
변수를 사용할 수도 있습니다. 이 메서드는 모든 매개변수를 고려하지만 매개변수 순서가 요청마다 다를 경우 키가 다르다는 점에 유의하세요.
즉, param1=value1¶m2=value2
및 param2=value2¶m1=value1
는 동일한 캐시 키 값을 가져오지 않습니다.
<Scope> 및 <Prefix> 사용
<Scope>
및 <CacheKey>
/<Prefix>
요소는 캐시된 값을 네임스페이스로 구성하는 방법을 제공합니다. Apigee는 이 캐시에서 파생된 값을 캐시 키 앞에 추가합니다.
캐시 키에 범위나 프리픽스를 사용하면 InvalidateCache 정책을 한 번 호출하여 단일 프리픽스를 공유하는 모든 값을 무효화할 수 있다는 장점이 있습니다.
<Scope>
요소가 기본적으로 사용됩니다. 이는 넓은 범위에서 좁은 범위까지 나열한 값이며, 기본값은 가장 좁은 범위입니다. 다른 값을 지정하거나 <Prefix>
요소 값을 지정하지 않으면 이 기본값이 사용됩니다. <CacheKey>
/ <Prefix>
요소를 사용하여 <Scope>
값을 재정의할 수 있으므로 네임스페이스의 커스텀 값을 지정할 수 있습니다.
예를 들어 가장 광범위한 범위인 <Scope>
값 'Global'은 조직과 환경 이름을 나타냅니다. 따라서 프록시가 'mycompany'라는 조직에서 배포되고 'prod'라는 환경에서 배포된 경우 최종 값은 다음과 같습니다.
mycompany__prod__[FRAGMENT_PART]
LookupCache 정책에 설명된 대로 범위를 Global에서 Exclusive로 구체성을 높이도록 구성할 수 있습니다. Exclusive 범위는 가장 구체적이므로 주어진 캐시 내의 네임스페이스 충돌 위험을 최소화합니다. Exclusive 범위를 사용하는 각 캐시 항목은 다음 형식의 프리픽스가 붙습니다.
orgName__envName__apiProxyName__deployedRevisionNumber__nameof(proxyEndpoint|targetEndpoint)__[serializedCacheKey]
몇 가지 예를 들면 다음과 같습니다. 여기서는 'weatherapi'라는 프록시의 16번째 버전이 'mycompany'라는 조직과 'prod'라는 환경에 배포되고 proxyEndpoint 이름이 'default'이며 캐시 정책이 proxyEndpoint의 흐름에 연결된다고 가정합니다.
구성 | 결과 |
---|---|
<Scope>Global</Scope> <CacheKey> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey> |
mycompany__prod__hello__world 할 수 있습니다. |
<Scope>Exclusive</Scope> <CacheKey> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey> |
mycompany__prod__weatherapi__16__default__hello__world |
<Scope>Exclusive</Scope> <CacheKey> <Prefix>system1</Prefix> <KeyFragment>hello</KeyFragment> <KeyFragment>world</KeyFragment> <CacheKey> |
system1__hello__world |