2011-01-29 2 views
2

У меня есть новостной сайт, который получает около 58 000 обращений в день за 36 000 статей. Из этих 36000 уникальных историй, 30000 получают только 1 удар (большинство из которых являются поисковыми роботами), и только 250 историй получают более 20 впечатлений. Это потеря памяти для кеширования, но эти 250 статей.Кэширование только часто используемых данных в PHP

В настоящее время я использую MySQL Query Cache и xcache для кэширования данных. Таблица обновляется каждые 5-10 минут, поэтому Query Cache не очень полезен. Как я могу обнаружить часто посещаемые страницы и кэшировать данные?

+2

Is waste of memory * действительно * проблема? Насколько велика каждая история? –

+0

Сериализованный ряд длиной от 2000 до 5000 символов. –

+0

Это не так много, хранение дешево. Вы, вероятно, потратите гораздо больше денег на поиск решения, чем на покупку большего объема памяти. Однако, если данные являются просто текстом, почему бы не сжать его? –

ответ

4

Я думаю, что вы можете иметь два варианта, чтобы начать с:

  1. Вы ничего по умолчанию не кэш.

    Вы можете реализовать с помощью шаблона Observer/Observable способ запуска события, когда представление статьи достигнет порогового значения и начнет кэшировать страницу.

  2. Вы кэшировать каждую статью при создании

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

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

Это будет зависеть от того, как читается ваш контент, если статьи являются новостями в реальном времени, это, вероятно, будет эффективным, так как оно быстро генерирует высокий трафик.

Задача с этим методом заключается в том, что вам нужно будет хранить дополнительную информацию, такую ​​как последнее время доступа и текущие просмотры страниц, что может привести к дополнительным запросам.

1

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

+0

Проверка даты создания - хорошая идея. Это может значительно сократить количество статей. Из того, что я слышу, поскольку я не использую расширенные функции, xcache намного быстрее, чем memcached и Redis. –

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