Используя cachedwithin приписывают внутри cfquery

Когда Вы используете атрибут cachedwithin в cfquery, как он хранит запрос в памяти. Это хранит его только именем, которое Вы присваиваете запросу? Например, если на моей индексной странице я буду кэшировать запрос в течение часа и буду называть ее, то getPeople будет, запрос с тем же именем на другой странице (или той же странице в этом отношении) использует кэшируемые результаты, или она использует некоторую лучшую логику, чтобы решить, является ли это тот же запрос?

Кроме того, если существует переменная в Вашем запросе, кэш принимает во внимание значение переменной?

5
задан Cœur 1 December 2019 в 07:33
поделиться

2 ответа

Дело не только в имени - это точный запрос, который вы выполняете.

<cfquery name="getPeople" cachedwithin=".5" ...>
select name from employee order by name
</cfquery>

Если вы вызовете этот же запрос где-нибудь еще в своем приложении, вы получите кешированную версию, если она окажется в пределах половины дня после первого запроса. Но они попадут в базу данных за свежими данными:

<!--- Different name, same SQL: A new cached query --->
<cfquery name="getEmployees" cachedwithin=".5" ...>
select name from employee order by name
</cfquery>

<!--- Different SQL, same name: Redefining the cached query --->
<!--- Note: As pointed out in comments, it's not really overwriting the old query
      of the same name, but making a new one in the cache. The first one by the
      same name is still in the cache, waiting for eviction. --->
<cfquery name="getPeople" cachedwithin=".5" ...>
select name from employee order by name desc
</cfquery>

И да, переменная учитывается. Если вы используете cfqueryparam - что вы должны делать - ваша база данных будет кэшировать план запроса , но даже используя cachedwithin , каждый запрос с измененным параметром будут рассматриваться как отличные от точки зрения кэширования запросов. Обратите внимание, что это означает, что если вы используете cachedwithin в запросе, который выполняется много раз с разными параметрами, вы будете переполнять свой кеш запросов запросами с низкой частотой попаданий в кеш.

5
ответ дан 14 December 2019 в 04:30
поделиться

Из http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fae.html

Чтобы использовать кэшированные данные, текущий запрос должен использовать тот же оператор SQL, данные источник, имя запроса, имя пользователя, пароль .

Так это «ключи», которые «решают, является ли это той же переменной запроса»

? да, если вы используете

3
ответ дан 14 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: