Определение времени кэширования ответа в Apigee ResponseCache

Я пытаюсь выяснить, когда ответ был сохранен в моем ResponseCache. Я вижу следующие переменные ResponseCache:

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

Я не вижу переменной для времени кэширования ответа. Есть ли такая переменная?


person user3254312    schedule 30.01.2014    source источник


Ответы (2)


политика ResponseCache Apigee автоматически кэширует весь ответ в время, когда политика встречается в потоке ответов. Я не верю, что есть какая-либо доступная переменная, которая содержит время помещения ответа в кеш. Однако есть способ добиться этого.

Во-первых, я подытожу поток 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* будут пропущены, и обращение к целевому серверу выполняться не будет.

В отличие от политики Cache, вы не можете определить, что помещается в кэш для ResponseCache. Это весь ответ. Однако вы можете добавить свои данные, добавив их в ответ.

В вашем случае прямо перед вызовом политики ответа RC1 в потоке ответа добавьте заголовок ответа с текущим временем (system.time). Ответ будет кэширован с вашим пользовательским заголовком. Затем, после политики ответа RC1, извлеките и удалите заголовок времени из ответа. Используя текущее системное время, вы также можете рассчитать, как долго ответ находился в кеше.

person Mike Dunker    schedule 30.01.2014

Мне нравится ответ Майка. Но пытаясь понять больше о вашем варианте использования, похоже, что в зависимости от возраста записи в кеше вы не можете вернуть ее из кеша. Если это так, вы всегда можете указать параметр истечения срока действия, чтобы более старые записи кэша автоматически аннулировались Apigee Edge. Вам не требуется условное программирование.

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

См.: http://apigee.com/docs/api-services/content/optimize-performance-using-cache

person Santanu Dey    schedule 31.01.2014
comment
Я уже использую это - мне просто нужно вернуть, сколько лет записи кеша в ответе. - person user3254312; 03.02.2014