Нужна рекомендация PHP кэширования - PullRequest
1 голос
/ 09 февраля 2011

Мне нужна помощь, чтобы найти правильное решение для кэширования сайта клиента. Текущий сайт - centoOS, php, mysql, apache, использующий шаблоны smarty (я знаю, что они отстой, но он создан кем-то другим). Текущие модели / методы используют довольно хорошую ОО-структуру, но есть много способов выполнить некоторые простые функции страниц. Я пытаюсь найти какое-то решение для кэширования, но я нуб, когда дело доходит до этого, и не знаю, что доступно, что бы соответствовать текущей настройке сайта.

Это сайт типа аукциона, где, например, на одной странице отображается одновременно 10 аукционов - время и текущая ставка на каждом аукционе обновляются с помощью вызова ajax, возвращающего json каждую 1 секунду (это сайт аукциона с копейками, такой как beezid. com, так что обновления каждую секунду необходимы). Как видите, если сайт получает какой-либо трафик, количество одновременных запросов может быть огромным. Очевидно, что эти данные изменяются каждую секунду, поскольку возвращаемые данные json имеют обновленное время, оставшееся на аукционе, и, возможно, обновленные суммы заявок и пользователей ставок для каждого аукциона.

Что я хочу, так это возможность кэшировать определенные страницы в течение заданного промежутка времени или на основании другой измененной переменной. Например, память кэширует страницу, которая отображает 10 аукционов, и обновляет эту копию кэша только после окончания одного из аукционов. Или даже сценарий выше, который возвращает данные строки json каждую секунду. Если бы я смог кешировать первый запрос к этой странице в памяти, обработать следующие запросы из памяти, а затем повторно кешировать его через 1 секунду, что потенциально может значительно снизить нагрузку на сервер. Но я не знаю, возможно ли это вообще, или затраты на выполнение подобных действий перевешивают экономию нагрузки на любой запрос.

Я немного изучил xcache, но не смог найти способ установить конкретное время кэширования на определенной странице или на основе других переменных?!? Может быть, я что-то пропустил, но есть ли у кого-нибудь рекомендации по схеме кэширования, которая бы работала для этих требований?

Большое спасибо за любой вклад, который у вас может быть ...

Ответы [ 2 ]

2 голосов
/ 09 февраля 2011

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

Когда я делаю кеширование, я часто использую простой файловый кеш, хотя для определения свежести кешируемого содержимого требуется хотя бы один статистический вызов, он все же быстрее и незначительно лучше, чем вызов сервера SQL.

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

DC

1 голос
/ 09 февраля 2011

Zend_Cache может делать то, что вы хотите, и многое другое.Он поддерживает множество бэкэндов, включая xcache и memcache, и позволяет вам кэшировать данные, полные страницы, частичные страницы и так далее, практически все, что вы можете себе представить: p.

И на случай, если вам интересно:вы можете использовать компонент Zend_Cache самостоятельно, вам не нужно использовать полную инфраструктуру Zend для вашего приложения.

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