Данный
public function getScheduleSelect() {
$duration = 86400; // cache query results for 1 day (60*60*24 secs).
$dependency = new DbDependency();
$dependency->sql = 'SELECT MAX(`modifieddatetime`) FROM {{%schedule}}';
return ArrayHelper::map(
$this->find()
->select('schedule')
->orderBy('schedule')
->distinct()
->asArray()
->cache($duration, $dependency)
->all(),
'schedule', 'schedule');
}
Если бы я изменил $duration
на 0 (ноль) или NULL, остался бы кеш навсегда, если бы $dependency
не изменился? Или никогда больше не проверю?
По сути, я хотел, чтобы запрос выполнялся только при изменении $dependency
,
🤔 А знаете ли вы, что...
Yii использует объектно-ориентированный подход к разработке и следует принципам MVC (Model-View-Controller).
В документации говорится, что 0
продолжительность означает «бесконечность». Если вы передадите null
в качестве продолжительности, вместо этого будет использоваться значение, установленное в свойстве $defaultDuration
.
На самом деле, что означает «бесконечность», зависит от того, какой механизм кэширования вы используете.
Например, yii\caching\FileCache
устанавливает срок действия на 1 год, когда вы передаете 0
в качестве продолжительности.
Memcache не устанавливает конкретный срок действия, но ваши данные могут быть удалены, когда кеш заполнен и требуется место для новых записей.
yii\caching\ArrayCache
сохраняет в памяти только кешированные данные, поэтому они будут доступны только во время текущего запроса, а при следующем запросе весь кеш будет удален.