Райло; Укажите, был ли обновлен кешированный запрос

Исходная ситуация: внутри функции я кэширую запрос, используя атрибут cachedWithin. Прямо под тегом cfquery я кэширую производные и связанные данные в структуру, хранящуюся в области SERVER.

Проблема: я хочу повторно заполнить эту структуру, если приведенный выше запрос был обновлен, но foo.cached только указывает, является ли тег вообще использует кеширование. Предоставляет ли Railo дополнительные метаданные для фактического получения значения true, если этот запрос был обновлен, а не только если он вообще кэширован, или мне следует прибегнуть к обходному пути cfcache?


person mz_01    schedule 02.11.2011    source источник


Ответы (2)


Я считаю, что result.cached это то, что вам нужно. Я только что протестировал образец запроса с небольшим промежутком времени cachedWithin, и он был установлен в false в двух случаях: (1) когда записи добавлялись; (2) когда тайм-аут произошел. Итак, ваше первое предположение выглядит нормально.

person Sergey Galashyn    schedule 02.11.2011
comment
Странный. Я тестировал его, используя версию 3.2, и для кэширования всегда было установлено значение true. Отсюда тот пост выше. На данный момент не могу попробовать 3.3, так как часть устаревшего кода в этом приложении необходимо сначала сделать совместимым (хорошо, что у администратора сервера Railo есть функция отката). - person mz_01; 03.11.2011

На всякий случай, если кому интересно:

Поскольку в моем случае атрибут «кешированный» оказался ненадежным (может быть, потому, что я унаследовал эту систему от своего предшественника и не могу поручиться за то, сколько серверов приложений было изменено в прошлом), я прибег к другой подход, основанный на классическом блоке cacheGet/cachePut.

Результирующая логика принятия решения о кэшировании основана на тайм-ауте последующей структуры, переданной этим запросом.

person mz_01    schedule 17.02.2012