Кэширование должно выполняться в модели. Если бы мне пришлось выбирать вообще, я бы, вероятно, в конечном итоге прозрачно кешировал взаимодействие с базой данных модели, что не потребовало бы от вас внесения каких-либо изменений в остальные.вашего кода.Это, конечно, будет сделано в родительском классе ваших моделей.
Определенно сосредоточьтесь на кэшировании результатов запросов к вашей базе данных, поскольку при взаимодействии с вашей базой данных вы увидите больше всего накладных расходов.Я бы сказал, что было бы более эффективно кешировать результаты вашей базы данных (или, может быть, всю вашу инициализированную модель) больше, чем что-либо еще.
Помните, что вы можете сериализовать свои объекты перед кэшированием, поэтому отправка сложных типов (массивов или объектов) в memcache не должна быть проблемой.PHP 5 предоставляет магические методы __sleep()
и __wakeup()
для целей разделения и реконструкции ваших сериализованных объектов.Кэширование полных объектов в PHP - это просто кусок пирога.См. http://php.net/manual/en/language.oop5.magic.php для получения дополнительной информации.
Если вы решите кэшировать только свои данные или всю модель вскоре после инициализации, оставьте на ваше усмотрение.