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, вы также можете рассчитать, как долго ответ был в кеше.
Я использую уже - мне просто нужно вернуться, как старый элемент кэша в ответ. – user3254312