Лучший способ кеширования объектов в PHP? - PullRequest
0 голосов
/ 28 мая 2010

В настоящее время я разрабатываю большой сайт, который обрабатывает регистрацию пользователей. Сайт социальной сети ради аргумента. Однако я заметил задержку загрузки страниц и расшифровал, что именно создание объектов на страницах замедляет процесс.

Например, у меня есть объект Member, который при создании экземпляра с идентификатором, переданным в качестве параметра конструкции, запрашивает в базе данных строку этого члена в таблице базы данных участников. Неплохо, но это создается каждый раз при загрузке страницы; и вызывается несколько раз, когда, скажем, вызывает массив друзей этого конкретного участника, поскольку для каждого друга создается новый объект Member.

Таким образом, на одной странице я могу иметь более семи одинаковых объектов, но содержащих разные свойства.

Я хочу найти способ снизить нагрузку на базу данных и разрешить сохранение объектов между загрузками страниц. Например, вошедший в систему пользовательский объект должен быть создан при входе в систему (что я могу сделать), но затем сохранен где-то для извлечения, поэтому мне не нужно повторно создавать объект между загрузками страниц.

Каково лучшее решение для этого? Я взглянул на Memcache, но, поскольку он является сторонним модулем, я не могу заставить его установить его в этом случае. Каковы мои альтернативы и / или лучшие практики в моем случае?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 28 мая 2010

Я считаю, что обычно лучше кэшировать данные, полученные из базы данных, а не сам объект PHP.В любом случае, APC , Memcache или XCache будет способом его хранения.

0 голосов
/ 13 мая 2013

Если ваши требования к кешированию полностью связаны с объектом пользователя / члена, лучше всего кэшировать его в сеансе пользователя . Поскольку вам не нужен объект, когда пользователь не в сети; Выход из системы или тайм-аут сеанса сделает всю работу по сбору мусора. Если вам нужна еще большая скорость, вы можете использовать решение для кэширования (например, APC, Memcache и т. Д.) Для своей системы хранения сеанса.

Если вы используете ORM, вы можете кешировать непосредственно объект ORM, таким образом вам даже не нужно повторно извлекать его для обновления профиля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...