Кэш - это важная часть или веб-приложение, но не существует волшебного решения, подходящего для любого проекта.Работать над оптимизацией до того, как ваше приложение заработает, обычно плохая идея.Прежде чем спросить себя, где вы должны реализовать слой кеша, первым делом убедитесь, что ваше приложение работает хорошо (даже если медленно) без какой-либо оптимизации кеша.
Когда этот первый шаг достигнут, вы можете начать профилированиеприложение, в котором перечислены функции, которые, по-видимому, используют много ресурсов (например, ЦП, память, ввод-вывод, доступ к базе данных) или требуют много времени для завершения (обычно из-за тех же симптомов).
Если у вас есть список функций, которые, по вашему мнению, могут быть оптимизированы с помощью системы кэширования, вам нужно задать себе два вопроса:
"Как я могу улучшить все эти«Возможности одновременно» (макро-фокус). Очевидным ответом на этот вопрос часто является кэш доступа к данным.Обычно вы не хотите отправлять один и тот же запрос на сервер базы данных снова и снова, если возвращаемые данные всегда совпадают.Поэтому хранение данных такого типа в кеше с разумной продолжительностью жизни всегда будет хорошей идеей.
«Как я могу улучшить каждую функцию» (микро-фокус): это сложно, и вам нужно очень хорошо понять ваше приложение, чтобы понять это.Некоторые данные могут быть кэшированы, некоторые не должны, некоторые не должны.Отладчик и профилировщик обычно являются отличными инструментами для этого шага, потому что они помогают вам быть уверенными в том, почему функция работает медленно, и дают подсказки о том, как их следует оптимизировать.
ОптимизацияВы поймете, что это может быть связано с любым уровнем вашего приложения (презентация, бизнес-логика, данные), но это не значит, что вы должны реализовать их все.Есть несколько важных вещей, которые вы должны принять во внимание:
- Нужно ли оптимизировать эту функцию?(это заметный выигрыш для клиента? Для оборудования? Для всего приложения? Для других приложений?)
- Какого увеличения производительности я могу достичь?(1%, 200%, ...)
- Сколько времени мне потребуется, чтобы оптимизировать его?(1 час, 12 дней, ...)
- Насколько рискованно его оптимизировать?(может ли это что-то сломать для приложения? Для клиента?)
Когда у вас появятся ответы на эти вопросы, самое время поговорить об этом с вашим руководителем проекта, с вашими коллегами или даже слюди, которые не работают над приложением с вами.Хорошо иметь нейтральное мнение, а также нетехнические (или менее технические) мнения.Общение с этими людьми должно помочь вам понять, что следует делать, а что нет.
На данный момент у вас должен быть список оптимизаций, который достаточно ясен, что вы несколько раз продумали, и вы должны иметьНет проблем кодирования и тестирования их.