Кэширование -- что это такое в программировании/информационных системах (кэш, cache)

  • Кэширование -- в общем случае: перемещение каких-либо данных в такое место/вид, откуда, в случае надобности, их можно будет достать быстрее, чем оттуда, где они были изначально.
  • Кэш -- данные в "быстром" хранилище/виде.

Примеры кэширования -- откуда и куда/быстрее-медленнее

Это самое "место" может быть где угодно (как и исходное), лишь бы из него данные извлекались быстрее, так например:

  • С компьютера в локальной сети обычно быстрее (при прочих равных), чем с компьютера, находящегося на другом конце света (поэтому если запрос проходит через машину, которая к вам ближе -- можно сохранить)
    -- так могут делают интернет-провайдеры (сохранять что-то на своих компьютерах через, трафик через которые идёт к конечным пользователям) или ваши системные администаторы для страниц сайтов, к которым пользователи часто обращаются из своих браузеров обращаются часто.
  • Из оперативной памяти быстрее чем с диска (почитал раз -- загони в оперативу, если будешь ещё много раз обращаться) -- так делают прикладные программы (напр. фотошоп, чтобы быстрее применять фильтры к большим фото -- переносит их в оперативную память, а не работает с диском).
  • Из файла на диске (с готовыми результатами закешированными ранее) часто быстрее чем ждать, пока выполнится какой-то медленный запрос (например SQL) -- так делают приложения, работающие с разными СУБД.

Проблемы кэширования

  • Закешированные данные могут устаревать (почему все же периодически приходится его сбрасывать и опять обращаться к более медленному хранилищу)
  • "Быстрые" хранилища, в которые складывают популярные (для данной системы) данные, часто (особенно если речь об оперативной памяти) имеют куда меньший объём, чем "медленные" и потому всё и сразу закешировать не получается.

Key Words for FKN + antitotal forum (CS VSU):