Каковы преимущества и недостатки кэширования в веб-разработке В PHP, как это влияет на базу данных? - PullRequest
3 голосов
/ 07 июля 2011

В PHP, каковы преимущества и недостатки кэширования в веб-разработке. В PHP как это влияет на базу данных?

Ответы [ 5 ]

8 голосов
/ 07 июля 2011

Кэширование работает по-разному, но для PHP, в частности, я могу придумать несколько способов:

  1. Вызовы базы данных;они медленные, требуют вычислений и могут быть довольно интенсивными.Если у вас есть повторяющиеся звонки, кэширование запроса является золотым.Там два уровня;на стороне PHP, где вы контролируете кеш, и на стороне базы данных, где они делают.

  2. Запуск кода PHP означает, что веб-сервер вызывает интерпретатор PHP, анализирует код и запускает его.PHP-кеширующий может кэшировать часть анализа и сразу переходить к работающей части.Тогда есть следующее поколение прямого компиляции кода PHP в C и запуска его оттуда (как это делает Facebook).

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

Преимущества;

  • скорость
  • меньше используемых ресурсов
  • повторное использование
  • умный

Недостатки;

  • устаревшие данные
  • накладные расходы
  • сложность

Я буду иметь дело только снедостатки здесь;

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

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

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

1 голос
/ 07 июля 2011

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

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

Простой пример: веб-сайт, навигация которого хранится в базе данных, может кэшировать навигацию после извлечения навигации из базы данных, таким образомсокращение общего количества db-вызовов, потому что нам больше не нужно выполнять запрос для получения навигации.Когда изменяется навигация (например, была добавлена ​​страница), кэшированное значение для навигации должно быть перестроено, поскольку кешированная навигация еще не отражает последнее изменение: там нет новой страницы.

1 голос
/ 07 июля 2011

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

Преимущество кэширования:

  1. Снижение нагрузки на веб-серверы и базу данных
  2. Страница загружается быстрее

Недостатки:

  1. Поскольку информация хранится в кеше, она делает страницу тяжелой.
  2. Иногда обновленная информация не отображается, так как кэш не обновляется
1 голос
/ 07 июля 2011

Преимущества и недостатки кэширования в веб-разработке полностью зависят от нашего контекста!

Основным преимуществом является сокращение времени извлечения данных из базы данных или во время загрузки страницы.

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

1 голос
/ 07 июля 2011

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

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

Вышеприведенные утверждения носят чисто общий характер.

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