методы кэширования php - PullRequest
10 голосов
/ 06 мая 2011

Привет, на самом деле это больше информационный запрос.

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

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

Скажитенапример, пользователь заходит на домашнюю страницу, по умолчанию отображаются последние 10 происходящих событий, и если этот пользователь вошел в систему, эти события зависят от местоположения.Можно ли развернуть какую-либо систему кэширования при работе с зарегистрированными состояниями и данными, которые часто изменяются, в настоящее время система позволяет пользователю «показывать больше событий: это запрос ajax для получения дополнительных результатов из базы данных».

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

Я имею в виду, стоит ли оно того? Есть ли другие стимулы для повышения эффективности при работе с такого рода критериями?

Любые статьи или советы и информация по этому вопросу будут высоко оценены !! Пожалуйста, дайте мнезнать, требуется ли какая-либо другая информация !!

Ответы [ 3 ]

7 голосов
/ 06 мая 2011

Ваши основные решения:

  • файловый кеш
  • Memcached / Redis
  • APC

Каждый используется для немного другой цели.

Файловый кеш - это обычно то, что вы используете, когда можете предварительно визуализировать файлы или их части. Он используется в шаблонных решениях, частичных представлениях (mvc), фреймворках CSS. Такого рода вещи.

Memcached и redis более или менее равны, за исключением того, что redis больше ориентирован на noSQL. Они используются для распределенного кэша (несколько серверов, одни и те же кэшированные данные) и для хранения сеансов, если у вас есть кластер веб-серверов.

APC хорош для двух вещей: кэш кода операции и кэш данных. Быстрее тогда memcached, но работает для каждого сервера отдельно.


Итог: в огромном проекте вы будете использовать их все. Каждый для своего задания.

4 голосов
/ 06 мая 2011

Таким образом, у вас есть кэширование кода операции, которое ускоряет процесс, сохраняя уже скомпилированные файлы PHP в кэше.

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

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

Iоднажды написал сообщение в блоге о том, как сделать кэширование вывода:

http://www.spotlesswebdesign.com/blog.php?id=17

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

2 голосов
/ 06 мая 2011

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

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

...