Это безумие - не полагаться на систему кэширования, такую ​​как memcached в настоящее время (для динамических сайтов)? - PullRequest
2 голосов
/ 27 августа 2009

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

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

  • Перезапись будет выполняться на PHP или Python
  • Было бы неплохо, если бы я мог профилировать до и после этой реализации
  • У меня есть свой собственный сервер, поэтому я не ограничен общим хостингом

Ответы [ 4 ]

10 голосов
/ 27 августа 2009

Кэширование, когда оно работает правильно (== высокая частота попаданий), является одним из немногих методов общего назначения, которые действительно могут помочь с задержкой - более сложная часть проблем обычно описывается как «производительность ». Вы можете улучшить показатели производительности QPS (количество запросов в секунду), просто добавив больше оборудования для решения проблемы - но задержка не работает таким образом (т. Е. Не требуется всего один месяц для малыши, если над этим работать девять мам; -).

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

6 голосов
/ 27 августа 2009

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

Что «сумасшедшего», так это архитектура кода (или отсутствие архитектуры), которая затрудняет добавление кэширования в последнем.

3 голосов
/ 27 августа 2009

Поскольку Python - один из ваших вариантов, я бы выбрал Django. Встроенный механизм кэширования, и я использую этот debug_toolbar , чтобы помочь мне при разработке / профилировании.

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

Да, и кэширование стоит только в том случае, если есть (или будут) проблемы с производительностью. Нет ничего плохого в том, чтобы «не полагаться» на кэши, если вам это не нужно. Преждевременная оптимизация - это 99% зла!

0 голосов
/ 27 августа 2009

В зависимости от специфики кодовой базы и шаблонов трафика, вам может даже не понадобиться переписывать весь сайт. Ужасно неэффективный код - не такая уж большая проблема, если его можно обойти через кеш для 99,9% запросов страниц.

Выбирая PHP или Python, убедитесь, что вы выяснили, где вы собираетесь разместить сайт (или даже если вам удастся сделать этот вызов). Многие из моих клиентов уже настроены на веб-сервере, и Python не вариант. Вы также должны убедиться, что все базы данных / внешние программы, с которыми вы хотите взаимодействовать, хорошо поддерживаются в PHP или Python.

...