Использует ли memcache (d) преждевременную оптимизацию? - PullRequest
2 голосов
/ 10 декабря 2011

Я работаю над веб-приложением, которое еще даже не в сети.Реализация memcache или memcached на прямо сейчас немного преждевременна?Следует ли использовать его только в том случае, если:

  • веб-приложение работает и
  • база данных имеет низкую производительность из-за высокого трафика / нагрузки?

Или лучше реализовать во время разработки?

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

Ответы [ 3 ]

4 голосов
/ 10 декабря 2011

Знай свою проблемную область

См. Собственную вики memcached:

Может ли использование memcached замедлить работу моего приложения?

Да, абсолютно. Если ваши запросы к БД все быстрые, ваш сайт быстро, добавление memcached может не сделать это быстрее.

Получите это работает первым

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

Лучше всего перевести его в рабочее состояние, а затем сделать несколько вещей:

Профиль производительности

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

Определить результаты оптимизации

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

Реализация оптимизации

Как только вы определили, что нужно оптимизировать, создайте план и выполните его.

Источники

0 голосов
/ 15 декабря 2011

На самом деле на этот вопрос есть два ответа:

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

Во-вторых, проектирование вашего приложения для будущей загрузки.Это означает, что перед тем, как приступить к написанию кода, вы должны попытаться ответить на этот вопрос: «Как изменится мой дизайн, если приложение должно справляться с нагрузкой, скажем, в 10 000 раз больше, чем сейчас планируется?»Это обычно приводит к более продвинутой (как в сквозной) структуре, которая предусматривает масштабирование до нескольких серверов, и вместе с этим возникает необходимость в распределении состояния между серверами, а следовательно, и в распределенном кэшировании.Если вы не ответите на этот вопрос, есть большая вероятность, что вам придется рано или поздно переписать ваше приложение.

Другими словами, проектируйте будущее, внедряйте сегодня.

Надеюсь, это поможет.

Слава Имешев

0 голосов
/ 10 декабря 2011

Совсем нет, memcache - это просто внешнее хранилище (быстрое и распределенное),
не больше или не меньше

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

, вероятно, не следует использовать для важных данных, таких как транзакция

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