2011-02-09 5 views
1

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

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

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

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

Mucho благодарит за любой вклад вы могли бы иметь ...

+1

Xcache - это кеш операций. Opcode - это выход первого прохода PHP Interpreter над вашим кодом. Код операции - это код, который фактически запускается на интерпретаторе. Кэширование Opcode не поможет вам кэшировать результаты вашего кода, только ваш код. –

+0

Xcache также может хранить переменные данные, используя [XCacheApi] (http://xcache.lighttpd.net/wiki/XcacheApi), это не просто кеш-код операции. – wimvds

+0

@ Dan - думаю, я был в замешательстве относительно того, что сделал кеш-код операции - это все равно поможет ускорить время обработки.И посмотрев на xcacheapi (@wimvds), который выглядит интересным и, возможно, решением, я смогу установить и посмотреть, как это работает. Спасибо за вашу помощь! – Michael

ответ

2

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

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

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

DC

+0

Я загляну в таблицу памяти. Есть ли memcached медведя для установки? Btw, сервер имеет 4 гигабайта памяти - и сейчас он использует только около 250 МБ, поэтому я не думаю, что память будет проблемой. – Michael

+0

memcached довольно прост из того, что я понимаю. если у вас есть доступ к машине. – DeveloperChris

1

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

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

+0

Спасибо за информацию. Я буду смотреть на более глубокий zend_cache, у меня создалось впечатление, что вся инфраструктура должна быть включена. – Michael

Смежные вопросы