2014-01-30 1 views
0

ResponseCache에 응답이 저장된 시간을 파악하려고합니다. 다음 ResponseCache 변수가 표시됩니다.응답이 Apigee ResponseCache에 캐시 된 시간 확인

responsecache.<policy-name>.cachename 
responsecache.<policy-name>.cachekey 
responsecache.<policy-name>.cachehit 
responsecache.<policy-name>.invalidentry 

응답이 캐시 된 시간의 변수가 표시되지 않습니다. 그러한 변수가 있습니까?

답변

1

Apigee ResponseCache policy은 정책이 응답 흐름에서 발견 될 때 자동으로 전체 응답을 캐시합니다. 응답이 캐시에 저장된 시간을 포함하는 접근 가능한 변수가 있다고 나는 믿지 않는다. 그러나이를 수행 할 수있는 방법이 있습니다.

먼저 ResponseCache 플로우를 요약 해 보겠습니다. ResponseCache 정책 RC1이 있다고 가정 해보십시오. 요청 및 응답 흐름에 배치합니다. 여기서 도면이다

 -->[P]-->[P]-->[P]-->[RC1]-->[P*]-->[P*]-->[P*]--> 
CLIENT       v       TARGET 
     <--[P]<--[P]<--[P]<--[RC1]<--[P*]<--[P*]<--[P*]<-- 

플로우가 요청 된 흐름 RC1 도달

가 캐시 키가 이미 구축 된 상기 응답 캐시 대응하는 캐시 된 응답에 대해 체크된다.

캐시 실패의 경우 모든 정책 (P, P * 및 RC1)이 실행됩니다. 응답 흐름에서 RC1에 도달하면 전체 응답이 캐시에 저장되고 흐름이 계속됩니다.

캐시 적중이 발생하면 P 및 RC1 정책 만 실행됩니다. P * 정책은 건너 뛰고 대상 서버를 호출하지 않습니다.

캐시 정책과 달리 ResponseCache의 캐시에있는 항목을 정의하지 않아도됩니다. 전체 응답입니다. 그러나 응답에 추가하여 자신의 데이터를 추가 할 수 있습니다.

응답 흐름에서 응답 RC1 정책이 호출되기 바로 전에 현재 시간 (system.time)으로 응답에 헤더를 추가하십시오. 응답은 사용자 정의 헤더와 함께 캐시됩니다. 그런 다음 RC1 정책에 응답 한 후 응답에서 시간 헤더를 추출하고 제거합니다. 현재 system.time을 사용하여 응답이 캐시에 있었던 기간을 계산할 수도 있습니다.

0

나는 마이크가 제공 한 답변을 좋아합니다. 하지만 유스 케이스에 대해 더 많이 이해하려고하면 캐시 엔트리의 나이에 따라 캐시에서 반환하지 않을 수도 있습니다. 이 경우, 오래된 캐시 항목이 자동으로 Apigee Edge에 의해 무효화되도록 만료 설정을 지정할 수 있습니다. 조건부 프로그래밍이 필요하지 않습니다.

<ExpirySettings> 
    <TimeoutInSec>300</TimeoutInSec> 
    </ExpirySettings> 

참조 : 이미 것을 사용하고 http://apigee.com/docs/api-services/content/optimize-performance-using-cache

+0

- 난 그냥 캐시 항목이 응답에 얼마나 오래된 반환해야합니다. – user3254312

관련 문제