-
Notifications
You must be signed in to change notification settings - Fork 52
Ru:Caches
(В процессе написания, если не изменялась больше недели, то значит это уже не так и автор потерял музу :) )
На этой странице будут рассмотрены несколько несколько onPHP воркеров и кратко описаны прицнипы как они работают, что умеют делать автоматически, а что не умеют.
Воркер не кэширующий ничего. Любой запрос он всегда отправляет в базу.
Объекты получаемые методами getById и getByIds по умолчанию кэшируются и кладутся по ключу на основе их идентификатора и имени класса. При изменении/удалении объектов вызывается uncacheById(s) которые на основе имени класса и идентификаторе формирует ключ, которые необходимо удалить в кэше. Списки по умолчанию не кэшируются, но если кэшировать то кэширует по ключу формируемому на основе запроса, что-то вроде "хэш запроса". Соотвественно для раскешивания таких запросов необходимо вызывать метод uncacheByQuery передавая туда конкретный запрос.
По умолчанию кэширует все запросы - и getById(s) и все остальные. getById кэшируются так же как в CommonDaoWorker. Остальные запросы кэшируются по другому. Для каждого класса в специальном адресе хранится случайное число, оно учавствует в формировании ключа по которому хранится кэш запроса. Если один из объектов класса изменяется/удаляется - в ячейку кладется новое случайное число и все запросы ищутся/кладутся по новым ячейкам. Таким образом как только изменяется/удаляется один из объектов класса - сбрасывается его кэщ getById, а так же все остальные запросы сделанные через его DAO. Соотвественно все запросы в рамках одной таблицы всегда актуальны, если запрос был сделан с участием нескольких таблиц - его актуальность не гарантированна.