Как ускорить мое PHP-приложение с Memcached - PullRequest
0 голосов
/ 29 марта 2012

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

Я использую memcache, PHP и MySQL для своей БД. У меня есть таблица с именами friends, feeds и users.

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

С уважением, Resul

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Профилируйте ваше приложение и найдите места, где вы получаете доступ к данным, которые дорого получить (или рассчитать). Эти места хороши для начала с memcached, если только вы не делаете больше записей, чем операций чтения (где вам, вероятно, придется обновлять кэш чаще, чем вы могли бы его использовать).

Кэширование всего, к чему вы когда-либо обращаетесь, может привести ни к чему, кроме довольно полного memcached, который содержит в основном данные, к которым редко обращаются (в то время как потенциально выталкивая вещи из кеша, вы фактически должны кешировать). Во многих случаях вам не следует использовать memcached в качестве копии базы данных 1: 1 в форме ключ-значение.

1 голос
/ 29 марта 2012

Прежде чем вы даже приступите к оптимизации на стороне сервера, вы должны запустить ySlow и попытаться получить оценку А.Внимательно посмотрите на свой JavaScript тоже.Если вы используете jQuery, то избавление от него значительно улучшит общую производительность сайта.Оптимизация внешнего интерфейса обычно намного важнее.

Следующим шагом будет оптимизация очистки кода на стороне сервера.Попробуйте протестировать свои SQL-запросы qith EXPLAIN.Посмотрите, если вы пропустили некоторые индексы.Затем выполните профилирование на стороне PHP с помощью Xdebug .Посмотрите, где находятся узкие места.

И только тогда начнут кашлять.Что касается Memcached, если ваш сайт не работает поверх кластера серверов, он вам не нужен.Черт .. это может быть даже вредно.Если ваш сайт расположен в одном окне, вы получите гораздо лучшие результаты с APC , который, в отличие от Memcached, по своей природе не распространяется.

0 голосов
/ 29 марта 2012

Напишите класс, который обрабатывает все запросы к БД, кэширует таблицы и выполняет запросы к кэшированным таблицам вместо вашей БД. обновляйте кэш каждый раз, когда вы делаете вставку или обновление таблицы.

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