Если удалить кэш в телефоне что будет. Что такое кэшированные данные в телефоне? Что такое кэш. Кэширование

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

Понятие кеша

Если говорить на простом языке, который будет понятен абсолютно всем категориям пользователей, то кеш - это буфер, в который помещаются обрабатываемые процессором данные, с целью ускорения доступа к ним кристаллу. Одним из основных преимуществ кеша является быстродействие, поскольку доступ к нему осуществляется значительно быстрее, чем к жесткому диску. Однако он обладает ограниченным объемом, что является одним из его недостатков. Стоит отметить, что технология кэширования применяется не только в CPU, но и в работе винчестера, в работе интернет-браузеров и различных онлайн-сервисов, а также во многих других процессах, происходящих во время работы персонального компьютера. В основу кэширования положено структурирование массивов данных, которые, в свою очередь, выступают всего-лишь копией основной информации, хранящейся на компьютере. Для ускорения доступа к кэшируемым данным, каждому массиву присваивается персональный тэг, выступающий в качестве идентификатора, необходимого для определения качества соответствия с оригиналом.

Процесс использования

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

Обновление данных

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

Политика записи

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

Современные вызовы

По мере развития современных технологий и изобретении новых моделей процессоров, работающих на более высоких частотах, а также скоростной оперативной памяти возникла необходимость увеличения производительности кеш-памяти. Это объясняется тем, что работа кеш-памяти более эффективна в том случае, если частота RAM-памяти меньше аналогичной у кристалла, поскольку CPU работает значительно быстрее. Поэтому инженеры пошли на определенные доработки и реализовали в различных устройствах свою кеш-память, что позволило увеличить время работы основного кеша. Также стоит отметить, что в современных процессорах реализована кеш-память меньшего размера, поскольку в основе их работы положен принцип виртуальной адресации, способной очень быстро обрабатывать большие массивы данных. Однако подобный подход при разработке других устройств показал меньшую эффективность, а в некоторых случаях даже бесполезность. Например, в большинстве современных моделей смартфонов и планшетных компьютеров используется медленная кеш-память с небольшим объемом, поэтому в этих гаджетах частота обновления кеша значительно выше.

Взаимная работа кеша различных устройств

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

Уровни кэширования

Современные модели процессоров и других девайсов поддерживают трех- или четырехуровневую кеш-память. Чем большим количеством уровней она обладает, тем больший объем данных может храниться в ней, однако, и тем большее количество времени необходимо для их обработки.
Кеш первого уровня. Является одним из наиболее быстрых, поскольку располагается непосредственно на одном физическом ядре кристалла, благодаря чему необходимо меньшее количество времени для обработки данных, хранящихся в нем. Этот кеш реализован во всех современных моделях CPU и работает он синхронно с процессором на одной частоте.

Кеш второго уровня. В большинстве случаев находится возле кеша первого уровня и используется в качестве памяти раздельного использования. Для определения его величины необходимо объем разделить на количество физических ядер, реализованных в кристалле.
Кеш третьего уровня. Является самым большим по объему, но и самым медленным в работе. Основным предназначением кеша третьего уровня является объединение хранящихся массивов данных, хранящихся в кеше второго уровня.

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

Ассоциативность кеша

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

Стоимость старших моделей смартфонов завышена. Все мы прекрасно понимаем, что разница в цене между 16 ГБ и 32+ ГБ моделями неоправданно большая. Речь идёт и о iPhone, и о всём многообразии флагманских представителей Android. В итоге человек берёт младшую модель с 16 гигабайтами хранилища на борту в надежде, что этого хватит. Но, зачастую реальность не оправдывает его ожидания.

Что съедает память в смартфоне

Для начала нужно понять, что указанный производителем объём памяти в устройстве - это не то же самое, что доступный пользователю объём памяти. То есть, на практике нам всегда доступно меньше памяти, чем написано на упаковке, и это справедливо как для iPhone, так и для семейства Android.

В обоих случаях операционная система устройства занимает 2-3 ГБ памяти, и вернуть их в распоряжение пользователя нельзя - эта пространство нужно для работы устройства.

Поэтому, когда вы подыскиваете новый смартфон, то считайте так: 16 ГБ на самом деле примерно равно 13 ГБ, а 32 ГБ - это в лучшем случае 29-30 ГБ.

В дальнейшем на оставшийся пользователю объём памяти будут посягать устанавливаемые приложения и игры . Экраны всё лучше, картинка должна быть всё качественнее, графика всё круче - это серьёзно утяжеляет приложения.

Кроме того, со временем установленные приложения будут толстеть, накапливая в памяти данные кэша - это всё, что остаётся в устройстве в процессе работы приложения и после его закрытия. Любое приложение, получающее контент из Сети, сохраняет его на устройстве для более оперативного предоставления пользователю. Смотрите YouTube - получаете кэшированные видеозаписи. Слушаете музыку онлайн - она кэшируется локально. Сёрфите в Интернете через Chrome - посещённые в браузере странички кэшируются.

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

Настройки -> Память -> тап на Данные кэша.

Также можно выборочно очистить кэш у отдельных приложений.

Настройки -> Приложения -> тап по толстому приложению -> Очистить кэш.

В iOS таких штатных средств нет, но есть сторонние утилиты .

В наши дни 1 ГБ для одной игры уже кажется вполне приемлемым. Периодическая чистка игр с предварительным вопросом к самому себе «буду ли я в это ещё играть?» поможет избавиться от надоевших и ненужных игрушек, которые продолжают занимать порядочное количество памяти. Это же справедливо для любых других приложений. Не понравилось приложение? Не планируете пользоваться им в будущем? Удалите его, не держите просто так на устройстве.

Загружаемая пользователем в устройство музыка становится всё качественнее. Некоторые уже не воспринимают 320 кбит mp3 и хотят только flac. Такие треки занимают в несколько раз больше места на устройстве.

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

Если речь идёт о фото и видео , то всё ещё хуже. В топовые актуальные смартфоны ставят 8+ мегапиксельные камеры, которые умеют снимать FullHD видео с высоким фреймрейтом и делать фото очень большого разрешения. Такие фото и видео занимают очень много места. Для примера, 1 час видео в качестве 1080p может занять на вашем смартфоне 10 ГБ места.

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

С хранением фотографий может помочь мобильное приложение Dropbox - в нём есть функция автоматического переноса снимков из памяти устройства в облако.

И всё же, чем более технологичными становятся наши мобильные устройства, тем больше будет требоваться места под приложения и контент. Производители понимают это, и зачастую идут навстречу пользователю, встраивая в смартфоны и планшеты слот под съёмные карты памяти . К сожалению, пользователи iPhone, гуглофонов и некоторых других линеек Android лишены такого преимущества. Google предлагает нам хранить все данные в Сети.

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

Кэширование — это один из способов оптимизации Web приложений. В любом приложении встречаются медленные операции (SQL запросы или запросы к внешним API), результаты которых можно сохранить на некоторое время. Это позволит выполнять меньше таких операций, а большинству пользователей показывать заранее сохраненные данные.

Наиболее популярная технология кеширования для Web приложений — Memcache .

Когда нужно кэшировать

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

  • Используйте классы или функции, для работы с данными. Не используйте повторяющихся SQL выборок в основном приложении.
  • Используйте обертки для работы с внешними API.

Что кэшировать?

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

  • Результаты запросов к внешним сервисам (RSS, SOAP, REST и т.п.).
  • Результаты медленных выборок из базы данных.
  • Сгенерированные html блоки либо целые страницы.

Кэширование выборок из баз данных

Запросы к базе данных — наиболее распространенный пример. На основе Мemcache реализуется очень просто:

!$list = memcache_get("online_users") ) { $sql = "SELECT * FROM users WHERE last_visit > UNIX_TIMESTAMP() - 60*10"; $q = mysql_query($sql); while ($row = mysql_fetch_assoc($q)) $list = $row; memcache_set("online_users", $list, 60*60); } return $list; } $list = get_online_users(); ...

# Запрос на получение пользователей кэшируется на 1 час

Обновление данных

Если Вы кэшируете данные, которые могут обновляться, необходимо очищать кэш после каждого обновления:

memcache_delete("user" . $id); }

Кэширование списков

Допустим, Вы кэшируете данные каждого пользователя, как в примере, а также их списки (например, список online пользователей). При обновлении данных пользователя, Вы удаляете данные из кэша только для указанного пользователя. Но его данные могут также присутствовать в списке online пользователей, которые тоже лежат в кэше. Сбрасывать списки при каждом обновлении данных любого пользователя не эффективно. Поэтому обычно используют такой подход:

  1. Кэшируют списки, которые состоят только из ID пользователей.
  2. Для вывода списка отправляют отдельный запрос для получения данных каждого пользователя.

Реализация выглядит так:

id FROM users WHERE last_visit > UNIX_TIMESTAMP() - 60*10"; $q = mysql_query($sql); while ($row = mysql_fetch_assoc($q)) $list = $row["id"] ; memcache_set("online_users", $list, 60*60); } return $list; } $list = get_online_users(); foreach ($list as $id) { $user = get_user($id); ... }

# Получим список ID пользователей и для каждого из них получим актуальные данные

Для получения данных сразу нескольких объектов можно использовать Multiget .

Повторные запросы

Некоторые данные могут запрашиваться несколько раз в рамках одной страницы, например:

get_user($_SESSION["id"])["name"] )?>

... Email: get_user($_SESSION["id"])["email"] ?> ... get_user($_SESSION["id"])["nick"] ?>">Моя страница ...

Каждый вызов get_user() будет получать данные из кэша. Если Memcache стоит на отдельном сервере, это вызовет большой сетевой трафик и задержки.

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

global $app_cache; if ($app_cache["user" . $id]) return $app_cache["user" . $id]; if (!$data = memcache_get("user" . $id)) { $sql = "SELECT * FROM users WHERE id= " . intval($id); $q = mysql_query($sql); $data = mysql_fetch_assoc($q); memcache_set("user" . $id, $data, 60*60); $app_cache["user" . $id] = $data; } return $data; } function save_user($id, $data) { global $app_cache; mysql_query("UPDATE users SET ... WHERE id = " . intval($id)); memcache_delete("user" . $id); unset($app_cache["user" . $id]); }

В реальных приложениях, имеет смысл иметь обертку для Memcache с дополнительным кэшом:

inner_cache)) return $this->inner_cache[$key]; $data = memcache_get($this->resource, $key); $this->inner_cache[$key] = $data; return $data["value"]; } public static function set($key, $value, $ttl) { memcache_set($key, $value, $ttl); $this->inner_cache[$key] = $value; } public static function del($key) { memcache_delete($key); unset($this->inner_cache[$key]); } }

# $inner_cache хранит дополнительный кэш

Внимание. Использование этого подхода может приводить к утечкам памяти в случаях, когда идет работа с большим количеством данных в кэше. Например, в cron-задачах (допустим, мы перебираем всех пользователей для отправки рассылки). Тогда лучше добавить отключение внутреннего кэша:

public static $inner_cache_enabled = true; public static function get($key) { if (self::$inner_cache_enabled && array_key_exists($key, $this->inner_cache)) return $this->inner_cache[$key]; $data = memcache_get($this->resource, $key); $this->inner_cache[$key] = $data; return $data["value"]; } public static function set($key, $value, $ttl) { memcache_set($key, $value, $ttl); if (self::$inner_cache_enabled) $this->inner_cache[$key] = $value; } public static function del($key) { memcache_delete($key); unset($this->inner_cache[$key]); } } ... mem_cache::$inner_cache_enabled = false;

# Отключаем внутренний кэш

Подогревание

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

# операции по обновлению внешних ресурсов $data = file_get_contents("http://rss.com/rss"); memcache_set("rss", $data, 60*60); }

Это позволит избежать дополнительной нагрузки при выполнении тяжелых выборок, когда ключ удаляется. Такую методику обычно используют в cron задачах, чтобы периодически обновлять результаты очень тяжелых выборок.

Время жизни (ttl)

ttl (время жизни) — это время, после которого, данные будут удалены из кэша. В Memcache устанавливается в секундах:

60*60 );

# Установка ttl на 1 час

Чаще всего ttl ставят от нескольких минут до нескольких дней. Не используйте значение 0 (бесконечное хранение), это может засорить память.

LRU

Любой кэш работает по принципу вытеснения если ему не хватает памяти. Т.е. если Memcache может использовать максимум 1G памяти, а Вы пытаетесь сохранить ключей на 2G, то половину из этих данных Memcache удалит. Для определения, какие именно ключи удалять, используется алгоритм LRU (Least Recently Used):

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

Кэширование очень медленных запросов

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

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

Атомарные операции

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

Memcache поддерживает две атомарные операции увеличения и уменьшения чисел:

# Увеличит счетчик на 1, функция memcache_decrement() уменьшает счетчик

Самое важное

Кэширование в приложениях на основе Memcache — это очень сильный инструмент. Не забывайте, что Memcache не гарантирует Вам сохранности данных. Это значит, что нельзя рассчитывать на то, что сохраненные на 60 минут данные будут находиться в кэше именно 60 минут.

В процессе работы с Android-устройствами (да и не только с ними) пользователи часто встречаются с таким термином как «кэш». Интернет переполнен программами и рекомендациями, предлагающими очистить кэш, удалить Cache, скачать игровой кэш и так далее. При этом многие пользователи часто даже не понимают, с чем имеют дело, механически выполняя требуемые от них операции. В этом материале я расскажу, что это такое кэшированные данные телефонах Андроид, каковы принципы работы с кэшом и как его удалить.

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

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

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

Для корректного запуска игры не забудьте установить кэш

Зачем нужно очищать кэш?

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

Также вам обязательно нужно знать для чего необходима папка занимающее более ГБ памяти вашего устройства и как удалив её освободить значимую часть памяти Андроид устройства.

В процессе работы вашего устройства его Cache начинает переполняться множеством разнообразных данных. Фотографии, которые вы когда-то смотрели, сайты, которые как-то посещали, приложения, которые запускали – все это оставляет след в памяти вашего устройства. Причём, в большинстве случаев, такие кэшированные данные лежат бесполезным грузом, ведь существует множество сайтов, которые мы посетили только раз, приложения, которые запускали только раз, фото, которые более не посмотрим и так далее.

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

Как удалить кэшированные данные

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

Очистку кэша можно выполнить несколькими способами, а именно:

Теперь мы разобрались, что значит очистить кэшированные данные на телефоне, и с помощью каких методов это можно сделать.

Заключение

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

Вконтакте

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

Пакет с которым я работал, интенсивно использовал кэширование. Он не мог отдавать более 10 страниц в секунду, если не были включены некоторые «опциональные» настройки кэша. Очевидно что с такой производительностью они на самом деле не опциональны, а обязательны.

Я думаю, что когда у Вас есть такой замечательный инструмент как memcached, так и хочется использовать его для решения любой проблемы с производительностью. Но во многих случаях он не должен быть первым инструментом который Вы пытаетесь использовать. И вот почему:

- Кэширование может работать не для всех пользователе й - Вы открываете страницу - она загружается быстро. Но так ли это для всех пользователей? Кэширование очень часто позволяет оптимизировать время загрузки для большинства посетителей, но часто в реальности Вам надо чтобы страница загружалась быстро для всех без исключения (если следовать принципу six sigma). На практике запрос может промахиваться мимо кэша всегда для одного и того же пользователя, что еще более усугубляет ситуацию (Прим. переводчика : Я знаю совершенно реальный случай, когда в электронном магазине кэш срабатывал для 99% процентов пользователей и не работал для 1% посетителей имевших длинную историю покупок, как результат магазин работал медленно как раз для активных покупателей).

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

- Управление кэшем в реальности непростая задача - Вы когда-нибудь боролись с "убеганием кэша " или с ситуацией когда большое количество элементов кэша инвалидируются одновременно?

Альтернативный подход

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

Что это за способы?

Перед тем как вводить оптимизацию убедитесь что Вы прошлись по этому достаточно простому списку:

- Вы понимаете план исполнения каждого запроса? Если нет, установите long_query_time=0 и используйте команду mk-query-digest, чтобы получить полный список запросов. Выполните для каждого из них EXPLAIN, проанализируйте план исполнения.

Вы используете SELECT * чтобы потом использовать только небольшой набор столбцов? Или вы выбираете из БД много строк, но используете только некоторые из них? Если это так - то вы выбираете слишком много данных, ограничивая оптимизацию уровня СУБД, такую например как использование индексов.

Знаете ли Вы сколько именно запросов Вы используете для генерации одной страницы? Все ли они действительно необходимы? Можно ли какие-то из этих запросов превратить в один запрос или вообще убрать? (Прим. переводчика : Очень распространенная проблема. Реально знаю случай когда на странице отображался список учеников в классе, а затем в цикле для каждого ученика запрашивалась дополнительная информация, включая название класса. После переделки количество запросов сократилось с 61 до 3-х).

Думаю что как вывод можно сказать: «Оптимизация очень редко уменьшает сложность приложения. Старайтесь избегать усложнения, за счет оптимизации только того, что действительно надо оптимизировать» - цитата со слайда Джастина - instrumentation-for-php .

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

Прим. переводчика : Совершенно реальный диалог произошедший не так давно:
- Так у нас проблемы с производительностью, надо добавить кэширование, вертикальное партиционирование и NoSQL DB для логинов
- Парни - я тут посмотрел EXPLAIN - у Вас fullscan запрос на 4,000 строк, я попробовал создать индекс- все ускорилось в 26 раз.

Несколько замечаний к переводу

1. Термин cache stampeding - я перевел как убегание кэша (был соблазн перевести как «просрачивание», но это было бы неправильно). Если коротко, это ситуация, когда например определенный запрос выполняется достаточно долго и результаты этого запроса кэшируются, когда затем эти данные рано или поздно уходят из кэша, и одновременно рендерится 10 страниц на которых эти данные нужны, то в БД отправляется 10 медленных запрсов, вместо одного. Обычно с этим борются пере запрашивая данные до того как они будут выкинуты из кэша. см например
2. Хочу обратить внимание, что в статье не говорится что кэшировать данные не надо. Их надо кэшировать, но только после того как Вы попробуете несколько простых способов оптимизации запросов к БД. Иными словами начинать надо с простого.