У меня есть сайт для видеоигры, в которую я играю, и я работаю над улучшением производительности сайта за счет дополнительного кэширования. Мне уже удалось реализовать кеширование результатов запросов в пользовательских функциях репозитория, но я не смог найти нигде, где бы объяснялось, как я могу включить кэширование результатов запросов во встроенные функции (findOneById и т. д.). Я заинтересован в этом, потому что многие из моих запросов к базе данных выполняются из этих «родных» функций репозитория.
Итак, в качестве примера у меня есть объект сущности персонажа со следующими свойствами: идентификатор, имя, раса, класс и т. д.
Раса и класс в этом объекте являются ссылками на другие объекты сущностей для расы и класса. Когда я загружаю персонажа для отображения, я получаю его по имени (findOneByName), а затем в своем шаблоне я отображаю расу/класс персонажа по $characterObject->getRace()->getName()
. Эти вызовы методов в шаблоне приводят к выполнению запроса к таблицам сущностей расы/класса, извлекающего сущность по идентификатору (я полагаю, findOneById).
Я попытался создать свою собственную функцию findOneById в репозитории, но в этих обстоятельствах она не вызывается.
Как я могу настроить доктрину/symfony так, чтобы эти результаты запросов можно было кэшировать?
Я использую Symfony 2.1.3 и доктрину 2.3.x.