HomeРазноеCache system что это: для чего используется и как изменить его размер

Cache system что это: для чего используется и как изменить его размер

Содержание

для чего используется и как изменить его размер

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

Для чего нужен кэш, и насколько целесообразно его увеличение?

Начнем с того, что есть несколько видов кэша. Системный кэш, как уже понятно, используется под нужд Windows, а кэш программ предназначен для корректного функционирования приложений. Чаще всего с понятием кэша пользователи сталкиваются при работе с интернет-браузерами. Но что это такое и для чего нужно? Кэш, вне зависимости от типа, является своеобразным хранилищем временных файлов, за счет использования которых увеличивается скорость загрузки программы или открытие тех же страниц в Интернете. То есть пользователь имеет дело с неким резервируемым на жестком диске пространством, которое используется операционной системой или отдельно взятым приложением. Как увеличить системный кэш или кэш программ, пока не рассматриваем. Для начала давайте определимся, стоит ли это вообще делать? С одной стороны, нет ничего плохого в том, чтобы зарезервировать для хранения временных файлов побольше места на диске. Так думает большинство рядовых пользователей. Но на самом деле кэш можно увеличивать только до определенной степени, поскольку установка слишком большого размера приведет к тому, что системе при выполнении какой-то операции придется перебрать слишком много объектов для загрузки, пока она найдет необходимый. Соответственно, и время запуска программ существенно снизится. Кроме того, следует обратить внимание, что кэш резервируется на жестком диске, а скорость обращения к нему может существенно снижаться, например при возникновении ошибок, фрагментации файлов и т. д.

Как увеличить системный кэш в Windows 7 или в другой системе?

Теперь перейдем непосредственно к изменению размера резервируемого пространства. Для начала рассмотрим системный кэш Windows 7.

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

Параметры файла подкачки

Иногда наряду с изменением размера кэша в сторону увеличения некоторые специалисты рекомендуют произвести дополнительные действия с так называемым файлом подкачки, который отвечает за работу и использование виртуальной памяти – такого же резервируемого объема на жестком диске, но используемого для выгрузки программных компонентов в случае нехватки оперативной памяти. Как и в случае с системным кэшем, нужно быть предельно осторожным. При малом объеме ОЗУ файл подкачки действительно можно немного увеличить, установив для него значение, которое в 1,5-2 раза превышает определяемое или рекомендуемое системой по умолчанию. Но и тут следует помнить, что при установке слишком большого объема можно добиться обратного эффекта, когда программы в приоритете будут производить обращение не к оперативной, а к виртуальной памяти. Повторимся: скорость доступа к винчестеру ниже, чем к планкам ОЗУ. Из-за этого мы получаем торможение программ при запуске или в процессе работы.

Негласно считается, что при установленных объемах оперативной памяти на уровне 8 Гб и более файл подкачки можно отключить вовсе, что никаким образом не скажется на работоспособности системы в отрицательную сторону. Наоборот, иногда можно добиться повышения производительности.

Параметры системного кэша в системном реестре

Параметры виртуальной памяти или кэша можно поменять и в системном реестре. Что касается стандартного автоматизированного увеличения системного кэша Windows 10, его лучше производить как раз именно в этом редакторе (regedit). Здесь нужно использовать ветку HKLM и через раздел SYSTEM и параметры текущего контроля перейти к папке MemoryManagement.

Здесь нас интересуют два параметра: DisablePagingExecutive и LargeSystemCache, которым могут быть присвоены значения либо нуля (отключение), либо единицы (включение). Первый ключ фактически дублирует отключение виртуальной памяти, а второй увеличивает системный кэш (система будет использовать не 8 Мб, установленных по умолчанию, а всю память, за исключением последних 4 Мб).

Настройки кэша в веб-обозревателях

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

Например, в старой версии «Оперы» опции выставляются в настройках истории. В новой модификации браузера следует использовать свойства ярлыка, а в пути к исполняемому файлу в поле типа объекта дописать сочетание —disk-cache-size=Объем и нужный размер кэша в килобайтах (например, для 1 Гб это будет 1073741824 Кб).

Очистка кэша

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

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

Источник: www.fb.ru

Что такое кэш? Простыми словами что такое кэш память на ПК, телефоне, браузере

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

Слово кэш пришло к нам от английского cache, что дословно переводится как «тайник». Не путайте его с однозвучным словом cash, которое означает «наличные деньги».

Говоря простыми словами, кэш (cache) представляет собой копии файлов, которыми вы пользовались, для быстрого доступа к ним. Если вы их удалите, то телефон, компьютер или браузер создаст их снова сразу после использования той или иной программы.

Назначение и тип кэша

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

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

Выделяют два типа кэша:

  1. Аппаратный.
  2. Программный.

Аппаратная реализация

Аппаратный кэш используется в электронных компонентах и мобильных устройствах – жестком диске, процессоре ПК или смартфона. В память с быстрым доступом помещаются и извлекаются копии часто используемых инструкций и записей. Причем если в HDD в качестве хранилища используется микросхема, то у центрального процессора для ПК или в составе мобильной платформы, кэш состоит из нескольких уровней именуемых L1, L2, L3 и т.д. Объем каждого последующего уровня кэша больше, при этом пропускная способность заметно ниже.

Организацию кэш-памяти центрального процессора для ПК рассмотрим на примере Intel Xeon E3-1240. Объем кэша L1 – 32 КБ на ядро, L2 – 256 КБ на ядро, а L3 – 8 МБ на все ядра. У более современных и многоядерных процессоров, объем памяти больше. Скорость чтения, записи и копирования, у каждого последующего уровня на 30-50% меньше. При этом пропускная способность самого медленного кэша L3 – в 6-8 раз выше, в сравнении с оперативной памятью.

Пропускная способность аппаратного кэша.Пропускная способность аппаратного кэша.Пропускная способность аппаратного кэша.

Принцип работы кэша следующий. Благодаря заложенным алгоритмам, процессор заранее просчитывает, какой тип данных потребуется, для чего извлекает заранее подготовленные записи. Если же расчет выполнен неверно или нужная запись отсутствует, цепочка действий выстраивается заново, а поиск требуемых данных выполняется в удаленных разделах памяти – кэш L2 или L3, оперативная память или HDD. В обоих случаях продолжительность обработки запроса увеличивается. Читайте подробнее о назначении кэша в процессоре.

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

Стоит отметить, что увеличить объем аппаратного кэша невозможно. И если для процессора это не критично, так как производитель устанавливает оптимальный объем памяти, то для жесткого диска лишней кэш память не будет. Поскольку часть памяти отведено под прошивку и микро ОС. Оптимальный объем 128 или 256 МБ.

Программная реализация

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

Стоит отметить, что на скорость считывания и загрузки данных из кэша влияет тип накопителя. Наивысшую скорость обеспечивают твердотельные диски – SSD, среднюю скорость демонстрируют гибридные решения SSD и HDD – HHD, наименьшая скорость у диска HDD.

Кэш в разных устройствахКэш в разных устройствахКэш в разных устройствах

Что такое кэш браузера

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

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

Что такое кэш на компьютере

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

Статистика очистки памяти.Статистика очистки памяти.Статистика очистки памяти на компьютере

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

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

Что такое кэш на телефоне

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

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

В ОС Android кэш активных пользователей часто достигает 2 ГБ, что ощутимо заметно на устройствах, где 8 или 16 ГБ внутренней памяти. Для освобождения памяти или ускорения работы устройства, рекомендуется удалить ненужные файлы. Узнайте детальнее, как очистить кэш на андроиде в отдельной статье.

Данные кэша в телефоне.Данные кэша в телефоне.Данные кэша в телефоне.

Краткое резюме

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

Видео инструкции

Вывод

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

Какие у вас есть вопросы? Задавайте интересующий вас вопрос в комментариях.

Post Views: 533

Все, что нужно знать о кэшировании / Хабр

Доброго времени суток.

Представляю вашему вниманию перевод статьи «Everything you need to know about Caching — System Design» автора Animesh Gaitonde.

Введение

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


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

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

Кэширование работает по принципу «локализации ссылок». Кэш представляет собой локальное хранилище данных для ускорения поиска информации и восстановления данных. Основной целью кэша является уменьшение задержки чтения данных и увеличение пропускной способности приложения. Давайте рассмотрим несколько примеров из реальной жизни.

Использование кэша

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

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

Как работает кэш?

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

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

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

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

Следующая диаграмма демонстрирует процесс чтения данных из кэша:

Ключевые концепции кэша

Время жизни (Time to Live, TTL)

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

В случае с Netflix, сервер будет кэшировать наиболее часто просматриваемые или популярные шоу. Не никакой надобности хранить в кэше шоу, которые никто не смотрит.

Например: хранить в кэше сериал «Бумажный дом» рациональней, чем фильм «Индиана Джонс».

Политика удаления

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

Существует несколько политик очистки кэша, таких как «старые (наименее недавно используемые)» (Least Recently Used, LRU), «редко запрашиваемые (наименее часто используемые)» (Least Frequently Used, LFU), «последние (наиболее недавано используемые)» (Most Recently Used, MRU). Эти политики удаляют данные из кэша по определенному принципу.

Старые

Из кэша удаляются данные, которые давно не запрашивались. Как только кэш заполняется, старые данные удаляются, новые добавляются.

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

Редко запрашиваемые

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

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

Из этого кэша впоследствии удаляются редко набираемые слова. В приведенном примере, если вы будете использовать слова «feature», «features», «feather» и т.д., через какое-то время телефон перестанет предлагать вам «feat», поскольку оно будет удалено из кэша.

Последние

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

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

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

Типы кэша

Запись через кэш

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

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

Запись из кэша

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

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

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

Запись в обход кэша

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

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

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

Список открытых проектов для работы с кэшем:

  • Redis
  • Memcached
  • VoltDB
  • Aerospike DBS
  • Apache Ignite

Благодарю за внимание.

что это, для чего используется и как изменить его размер в Windows?

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

Для чего нужен кэш, и насколько целесообразно его увеличение?

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

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

Как увеличить системный кэш в Windows 7 или в другой системе?

Теперь перейдем непосредственно к изменению размера резервируемого пространства. Для начала рассмотрим системный кэш Windows 7.

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

Параметры файла подкачки

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

Как и в случае с системным кэшем, нужно быть предельно осторожным. При малом объеме ОЗУ файл подкачки действительно можно немного увеличить, установив для него значение, которое в 1,5-2 раза превышает определяемое или рекомендуемое системой по умолчанию. Но и тут следует помнить, что при установке слишком большого объема можно добиться обратного эффекта, когда программы в приоритете будут производить обращение не к оперативной, а к виртуальной памяти. Повторимся: скорость доступа к винчестеру ниже, чем к планкам ОЗУ. Из-за этого мы получаем торможение программ при запуске или в процессе работы.

Негласно считается, что при установленных объемах оперативной памяти на уровне 8 Гб и более файл подкачки можно отключить вовсе, что никаким образом не скажется на работоспособности системы в отрицательную сторону. Наоборот, иногда можно добиться повышения производительности.

Параметры системного кэша в системном реестре

Параметры виртуальной памяти или кэша можно поменять и в системном реестре. Что касается стандартного автоматизированного увеличения системного кэша Windows 10, его лучше производить как раз именно в этом редакторе (regedit). Здесь нужно использовать ветку HKLM и через раздел SYSTEM и параметры текущего контроля перейти к папке MemoryManagement.

Здесь нас интересуют два параметра: DisablePagingExecutive и LargeSystemCache, которым могут быть присвоены значения либо нуля (отключение), либо единицы (включение). Первый ключ фактически дублирует отключение виртуальной памяти, а второй увеличивает системный кэш (система будет использовать не 8 Мб, установленных по умолчанию, а всю память, за исключением последних 4 Мб).

Настройки кэша в веб-обозревателях

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

Например, в старой версии «Оперы» опции выставляются в настройках истории. В новой модификации браузера следует использовать свойства ярлыка, а в пути к исполняемому файлу в поле типа объекта дописать сочетание —disk-cache-size=Объем и нужный размер кэша в килобайтах (например, для 1 Гб это будет 1073741824 Кб).

Очистка кэша

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

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

Что нам стоит Cache построить? / Блог компании Инфопульс Украина / Хабр

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

Я постараюсь кратко осветить основные моменты организации кеширования, после чего рассмотрю новшества .Net Framework 4.0, которые должны упростить жизнь разработчиков (речь пойдёт о In-memory кеше вне ASP.NET инфраструктуры).

Вступление

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

  • Что кешировать: какие именно данные должны сохраняться в кеше;
  • Как кешировать: какой максимальный объём мы можем выделить для работы кеша; будет ли установлено максимально допустимое время, в течении которого элемент не будет считаться устаревшим; будет ли актуальность наших элементов в кеше зависеть от каких-то внешних факторов или будут зависимости между самими элементами внутри кеша; будет ли важен порядок, в котором мы будем удалять элементы из кеша при достижении лимита памяти; и так далее…
  • Где кешировать: что будет выступать в роли кеша – в устройствах, это может быть аппаратный кеш, в программах, как правило мы прибегаем к готовой или самописной реализации кеша, которая способна удовлетворить требованиям в вопросе «как»;

Интересно то, что ответы необходимо давать именно в том порядке, как эти вопросы перечислены. Ибо сложно сказать «где кешировать», не понимая, «что и как» мы кешируем. Ещё, крайне желательно позаботиться о кешировании на ранних этапах проектирования системы. Так как вопреки бытующему мнению, что «Кеш всегда можно добавить в последний момент», это зачастую не так. Не думая о кешировании на начальном этапе, потом его добавление и тестирование может быть крайне затруднительным. Давайте попробуем найти ответы на вопросы, заданные выше, но сразу хочу уточнить, что большинство размышлений ниже будут приведены касательно кеша общего назначения внутри .Net приложения хранимого в оперативной памяти, т.е. это не кеш процессора и не кеш браузера. Кроме того, в рамках одной статьи, будет крайне сложно подробно и доходчиво изложить всю возможную теорию кеширования, поэтому я приведу базовые рекомендации и советы, которые надеюсь помогут избежать распространённых ошибок.

Что? Как? Где?

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

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

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

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

Думая о том, как правильно хранить наши данные в кеше, нам следует обратить внимание на следующие моменты:

  • Своевременное устаревание данных
  • Правильная очерёдность удаления элементов при достижении максимально доступного объёма памяти
  • Когерентность данных (если кеш распределённый, то один и тот же объект может отличаться в различных экземплярах кеша и тем самым приводить к негативным последствиям)

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

Итак, получив ответы на вопросы «Что» и «Как», может оказаться, что нашим ответом на вопрос где будет Dictionary<T,T> созданный в нашем приложении. Если так, то нам очень повезло. Но, как правило, всё чуточку сложнее и нам всё-таки придётся писать полноценную реализацию кеша либо выбирать что-то из уже готовых решений.
Примечание: нет единого мнения касательно того, будет ли реализация на основе Dictionary считаться кешем или нет. Лично я предпочитаю считать это частным случаем, который обособленно «стоит в сторонке». При этом мне даже встречался термин описывающий такой кеш как «статический», т.е. кеш в котором данные не удаляются и считаются бесконечно актуальными.

Рукописный кеш

Я не стану рассказывать, как написать свой кеш. Я, наоборот, постараюсь уберечь вас от ложного впечатления, что это сделать легко и просто. За исключением случая, когда Dictionary-like реализация отлично покрывает наши потребности, написание полноценного кеша является достаточно сложной задачей.

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

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

Многие примеры, реализующие кеширование, которые можно найти в интернете, используют механизм слабых ссылок (Weak references). Может появиться неудержимое желание применить их в своей реализации. Но без достаточного опыта в соответствующей области, мы не слабо увеличиваем шансы получить код, который мало того, что большинство команды не будет понимать, так он ещё навряд ли заработает после первых 5 раз переписывания.

Я думаю, что мог бы ещё долго продолжать этот список, но надеюсь, что даже уже перечисленных причин достаточно, чтобы у вас пропало желание проверять себя на прочность и усидчивость. Если же нет, то я могу лишь пожелать «Силы, ума и терпения (С)».

Теперь, поняв, что свой кеш это далеко не так просто, я предлагаю перейти к завершающей части статьи, которая расскажет, что уже есть готовое в .NET Framework для упрощения нашей жизни.

Жизнь до появления .Net Framework 4.0

Кеширование всегда было неотъемлемой частью ASP.NET веб приложений и .Net Framework предлагал отличные инструменты для ASP.NET приложений. Поэтому, исторически сложилось так, что все классы для работы с кешом располагались в сборке System.Web. Когда же кеш требовался вне веба (например Windows сервис), то многие разработчики жертвовали красотой своих решений и добавляли ссылку на сборку System.Web. Это позволяло воспользоваться преимуществами кеша, но тянуло за собой огромное количество ненужного кода. Данная проблема оставалась нерешённой достаточно долго, но к счастью, в .NET Framework 4.0 к ней всё-таки вернулись. В итоге мы получили пространство имён System.Runtime.Caching, в котором среди прочего, есть абстрактный класс ObjectCache и его единственная реализация — MemoryCache. Именно с ними я бы и хотел вас познакомить.

ObjectCache

ObjectCache — абстрактный класс, который даёт нам возможность стандартизировать подходы при работе с различными реализациями кеша. Имея одинаковый интерфейс (API) для работы с кешом, нам не придётся детально изучать каждую новую реализацию кеша. Ведь реализации с точки зрения пользователя должны будут выглядеть одинаково и вести себя согласно общеизвестным ожиданиями, выраженными в виде API данного класса. Основные методы, свойства и их назначение приведены ниже.

Свойства:

  • DefaultCacheCapabilities – битовыe флаги (enum, с атрибутом Flags), определяющие какие возможности предоставляет конкретная реализация (удаление элемента в определённое время, поддержка регионов, наличие механизма обратного вызова и т.п.)
  • Name – имя экземпляра кеша; в случае использования MemoryCache, может быть полезно, если, мы захотим сохранять данные в изолированных участках памяти и будем создавать более одного экземпляра кеша (данная возможность называется «регионы» и в MemoryCache не реализована)
  • this – индексер для доступа элементов по ключу

Методы:

  • Add(…), AddOrGetExisting(…), Set(…) – добавляют данные в кеш
  • Get(…), GetCacheItem(…), GetValues(…) – возвращают данные из кеша
  • GetCount() – возвращает текущий размер кеша
  • Contains(…) – проверяет существование элемента по ключу
  • Remove(…) – удаляет элемент по ключу

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

MemoryCache

Как следует из названия, MemoryCache является реализацией, которая хранит данные в оперативной памяти. На данный момент это единственный класс в .Net Framework, который наследует ObjectCache, но существуют Nuget пакеты, которые предлагают другие реализации (например для хранения данных в Sql сервере можно воспользоваться SqlCache Nuget пакетом). Ниже будут рассмотрены только те методы, работа которых может быть не сразу очевидна. В качестве демонстрации работы методов будут приведены листинги юнит тестов, написанные с использованием xUnit.

Метод AddOrGetExisting(…)

Добавляет элемент, только в случае, если ключ ещё не был использован, иначе игнорирует новое значение и возвращает существующее значение.

Метод Add(…)

Является обвёрткой над AddOrGetExisting(…) и работает практически идентично, с тем лишь различием, что он возвращает True, если элемент успешно добавлен, и False, если ключ уже существует (т.е. добавление значения не происходит).

Метод Set(…)

Добавляет новый или замещает существующий элемент, не производя проверку существующих ключей. Т.е. в отличии от методов Add и AddOrGetExisting, переданное значение в метод Set всегда появится в кеше.

Регионы в MemoryCache

Все методы добавления данных в MemoryCache имеют перегрузки, которые принимают параметр region (пример1, пример2 и пример3). Но при попытке передать в него любое не NULL значение мы получим NotSupportedException. Кто-то может сказать, что это нарушает принцип подстановки Лисков (soLid), но это не так. Ведь прежде чем воспользоваться возможностью регионов, клиентский код должен убедится, что они реализованы в конкретной реализации. Делается это проверкой свойства DefaultCacheCapabilities на наличие соответствующего битового флага (DefaultCacheCapabilities.CacheRegions), а он как раз не задан для MemoryCache.

CacheItemPolicy

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

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

Свойства AbsoluteExpiration и SlidingExpiration

Из названия понятно за что отвечают эти свойства. Но любопытные могут задаться следующим вопросом: «Как себя поведёт кеш, если одновременно задать значения для обоих свойств»? Кто-то может предположить, что AbsoluteExpiration имеет более высокий приоритет и объект удалится в момент AbsoluteExpiration, даже если его регулярно запрашивать из кеша (чаще чем SlidingExpiration). Кто-то наоборот, предположит, что значение SlidingExpiration позволит объекту пережить AbsoluteExpiration. Но разработчики Микрософта, посчитали, что истинно правильного ответа нет и поступили по-другому – они генерируют ArgumentException на этапе добавления элемента в кеш. Поэтому мы можем выбрать только одну временнУю (зависящую от времени) стратегию инвалидации для каждого элемента.

Второй сюрприз нас ожидает, если мы решим написать тесты на функционал, использующий кеш. Наверняка, для ускорения прогона тестов, мы захотим задать достаточно маленькое значение для SlidingExpiration (менее 1 секунды). В этом случае наши тесты будут вести себя не стабильно и часто будут падать. Это всё по тому, что для оптимизации работы кеша, в момент вычитывания элемента (метод Get и его производные), новое значение Expires будет устанавливаться только, если оно отличается от старого, не менее чем на одну секунду. Я не смог найти подтверждение этому в документации, но убедиться в этом можно декомпилировав класс MemoryCache и изучив метод UpdateSlidingExp(…) внутреннего класса MemoryCacheEntry.

Свойство Priority

Увидев это свойство, я ожидал, что оно может иметь значения «низкий/средний/высокий», чтобы задать порядок удаления элементов из кеша при достижении максимального объёма. Но у него может быть только 2 значения: CacheItemPriority.Default или CacheItemPriority.NotRemovable.
MSDN гласит, что установка значения CacheItemPriority.NotRemovable приведёт к тому, что элемент никогда не будет удалён из кеша. Лично я воспринял этот факт, как то, что, добавив все элементы с таким приоритетом, мы получим Dictionary-like реализацию, но это далеко не так. Элементы всё же будут удалены, если они «протухнут» (наступит AbsoluteExpiration или пройдет SlidingExpiration), но в отличии от режима по умолчанию, они не будут удаляться из памяти, при достижении лимита по объёму занимаемой памяти. Кстати лимит можно задать через свойство CacheMemoryLimit (в байтах) или через свойство PhysicalMemoryLimit (проценты от общего объёма памяти в системе).

RemovedCallback и UpdateCallback

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

Если задуматься, то обновление, это по сути операция удаления, после которой сразу же следует операция добавления нового значения. Это объясняет, почему RemovedCallback срабатывает при обновлении элемента. А то что UpdateCallback срабатывает при удалении – просто факт из MSDN.

Различие же свойств заключается в том, что RemovedCallback должен вызываться после, а UpdateCallback – до фактического удаления элемента из кеша. Делегаты, хранимые в этих свойствах, принимают параметр, в котором содержится ссылка на кеш, ссылка на удаляемый элемент и причина удаления элемента.

Ещё один подарок хранится в реализации MemoryCache. В этом классе есть немного странная логика валидации переданного CacheItemPolicy параметра. Сначала она проверяет, что бы оба делегата не были заданы одновременно, иначе мы получим ArgumentException на этапе добавления элемента в кеш.

И всё бы ничего, если б для корректной работы свойства UpdateCallback было бы достаточно убедиться в отсутствии значения в свойстве RemovedCallback. Но по факту, мы всегда получаем ArgumentException на этапе добавления элемента при установке не пустого значения в UpdateCallback.


В итоге, единственно допустимое свойство для установки делегата сигнализирующего об изменениях в кеше является RemovedCallback (справедливо только для реализации MemoryCache).

Свойство ChangeMonitors

Данное свойство может хранить коллекцию объектов типа ChangeMonitor, каждый из которых может добавлять условия, при которых элемент будет удалён из кеша.

Кроме того, что мы можем создавать свои реализации абстрактного класса ChangeMonitor, в .Net Framework существуют следующие классы:

  • CacheEntryChangeMonitor – следит за изменениями других элементов в том же экземпляре кеша
  • FileChangeMonitor (HostFileChangeMonitor) – следит за изменениями файлов и папок в файловой системе
  • SqlChangeMonitor – следит за изменениями в базе данных (достаточно медленный и редко применим на практике).

Важно помнить, что данное свойство в объекте CacheItemPolicy нужно задать до добавления элемента в кеш. Установка или изменение его для уже добавленного элемента не имеет никакого эффекта.

Заключение

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

Кэширование и производительность веб-приложений / Блог компании RUVDS.com / Хабр

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

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

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

Процессорный кэш

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

В процессорах имеется особая память, представленная регистрами процессора, которая обычно представляет собой небольшое хранилище информации, обеспечивающее крайне высокую скорость обмена данными. Регистры — это самая быстрая память, с которой может работать процессор, которая расположена максимально близко к остальным его механизмам и имеет небольшой объём. Иногда регистры называют кэшем нулевого уровня (L0 Cache, L — это сокращение от Layer).

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

Структура памяти в некоторых новейших CPU

Кэш жёсткого диска

Жёсткие диски (HDD, Hard Disk Drive), применяемые для постоянного хранения данных — это, в сравнении с оперативной памятью, предназначенной для кратковременного хранения информации, устройства довольно медленные. Однако надо отметить, что скорость постоянных хранилищ информации увеличивается благодаря распространению твердотельных накопителей (SSD, Solid State Drive).

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

Кэш жёсткого диска

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

О быстродействии жёстких дисков и оперативной памяти

Разница между временным хранением данных в оперативной памяти и постоянным хранением на жёстком диске проявляется в скорости работы с информацией, в стоимости носителей и в близости их к процессору.

Время отклика оперативной памяти составляет десятки наносекунд, в то время как жёсткому диску нужны десятки миллисекунд. Разница в быстродействии дисков и памяти составляет шесть порядков!

Одна миллисекунда равна миллиону наносекунд

Простой веб-сервер

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

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

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

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

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

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

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

Кэширование ответов веб-сервера

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

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

Мемоизация функций

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

Мемоизация — это обычный приём, используемый для повышения производительности программ. Однако он может быть не особенно полезным при работе с ресурсоёмкими функциями, которые вызываются редко, или с функциями, которые, и без мемоизации, работают достаточно быстро.

Кэширование в браузере

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

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

Перед нами весьма полезная технология, которая даёт следующие преимущества всем участникам обмена данными:

  • Улучшаются впечатления пользователя от работы с сайтом, так как ресурсы из локального кэша загружаются очень быстро. Во время получения ответа не входит время прохождения сигнала от клиента к серверу и обратно (RTT, Round Trip Time), так как запрос не уходит в сеть.
  • Уменьшается нагрузка на серверное приложение и на другие серверные компоненты, ответственные за обработку запросов.
  • Высвобождается некоторая часть сетевых ресурсов, которыми теперь могут воспользоваться другие пользователи интернета, экономятся средства на оплату трафика.

Кэширование в браузере

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

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

▍Шлюзы

Шлюз (gateway) — это прокси-сервер, который перенаправляет входящие запросы или исходящие ответы, не модифицируя их. Такие прокси-серверы ещё называют туннелирующими прокси (tunneling proxy), веб-прокси (web proxy), прокси (proxy), или прокси уровня приложения (application level proxy). Эти прокси-серверы обычно совместно используются, например, всеми клиентами, находящимися за одним и тем же файрволом, что делает их хорошо подходящими для кэширования запросов.

▍Прямые прокси-серверы

Прямой прокси-сервер (forward proxy, часто такие серверы называют просто proxy server) обычно устанавливается на стороне клиента. Веб-браузер, который настроен на использование прямого прокси-сервера, будет отправлять исходящие запросы этому серверу. Затем эти запросы будут перенаправлены на целевой сервер, расположенный в интернете. Одно из преимуществ прямых прокси заключаются в том, что они защищают данные клиента (однако, если говорить об обеспечении анонимности в интернете, безопаснее будет пользоваться VPN).

▍Веб-ускорители

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

▍Обратные прокси-серверы

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

▍Пограничное кэширование

Обратные прокси-серверы расположены близко к серверам. Существует и технология, при использовании которой кэширующие серверы располагаются как можно ближе к потребителям данных. Это — так называемое пограничное кэширование (edge caching), представленное сетями доставки контента (CDN, Content Delivery Network). Например, если вы посещаете популярный веб-сайт и загружаете какие-нибудь статические данные, они попадают в кэш. Каждый следующий пользователь, запросивший те же данные, получит их, до истечения срока их кэширования, с кэширующего сервера. Эти серверы, определяя актуальность информации, ориентируются на серверы, хранящие исходные данные.
Прокси-серверы в инфраструктуре обмена данными между клиентом и сервером

Итоги

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

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

Уважаемые читатели! Какие технологии кэширования вы используете в своих проектах?

что такое, удаление, где храниться

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

Что такое кэш

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

Типы кэша

Если что такое кэшированные данные в телефоне понятно, то дополнительно нужно понять, какой он есть. Деление на типы обусловлено видом приложения, которое создает файлы. От этого будет зависеть место, в котором он хранится. Типы кэша:

  1. Dalvik-cache. Пространство, выделяемое для виртуальной машины Dalvik. Очистить его можно, но проблематично. Делать это придется самостоятельно через режим разработчика. Неопытному пользователю лучше этим не заниматься.

Очистка Dalvik-cache в Андроид

  1. Системный, в разделе cache. Здесь хранятся данные системных приложений и операционной системы. Лучше не заниматься его очисткой, так как это приведет к удалению паролей и других данных.
  2. Для приложений. Сюда попадают данные из программ, которые установлены самим пользователем. Его очистка не может негативно повлиять на смартфон.

Очистка кеша в приложении Chrome

Данные кеша в приложении Chrome

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

Читайте также: Приложения для ускорения и чистки Android

Где найти кэш

Временные файлы пользовательских приложений можно найти в специальной папке Android, которую можно найти на самом устройстве или карте памяти. Удалять ее нельзя, так как она в себе хранит и другую важную информацию. Чтобы понять, где находится кэш на Андроиде, нужно открыть Andriod, а здесь есть папки data и obb.

Папки data и obb в Android

Эти обе папки хранят в себе кэшированные данные, но в отличающимся виде. В data они расположены в формате отдельных файлов, а в obb – в виде архивов. Для каждого приложения здесь создается отдельная папка с одноименным названием.

Данные приложений в папке data в Android

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

Почему кэш необходимо очищать

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

Мусор на устройстве Android

Внимание! Удалив кэш, нельзя продолжить работу с приложением с того места, с которого владелец смартфона прекратил его использование.

Сегодня среднее количество оперативной памяти равно 4-8 ГБ. Этот объем пространства быстро засоряется ненужными файлами, ведь данные кэшируются постоянно, откладываясь в памяти устройства. Заметить недостаток необходимого пространства легко – телефон перестанет корректно работать, так как количества свободных ресурсов будет недостаточно для функционирования операционной системы.

Очистка оперативной памяти устройсвтва Android

Внимание! То, как часто необходимо проводить чистку, зависит от характеристик телефона. Проще очищать пространство, когда оно заполнено.

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

Как очистить кэш

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

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

Через стандартный интерфейс Андроида

Большинство пользователей применяют стандартные инструменты смартфона. Для этого потребуется:

  1. Открыть настройки телефона.

Настройки телефона Android

  1. Найти раздел «Хранилище», где должна находиться строчка «Данные кеша».

Хранилище на Андроид

Весь кеш телефона Андроид

  1. Нажать на эту строчку и подтвердить очистку данных.

Удаление всего кеша на Андроид

Останется ожидать, пока система просканирует и самостоятельно удалит лишние файлы. В разделе «Хранилище» также можно ознакомиться с количество свободного и занятого пространства памяти. Если память не заполнена до конца, то не стоит проводить очистку.

Размер доступной свободной памяти на Андроид

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

Программа Clean Master

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

Clean Master для Андроид

Для очистки кэша потребуется следовать инструкции:

  1. Скачать приложение Clean Master, найдя в Play Market.

Скачать Clean Master из Google Маркет

  1. Открыть программу и найти раздел «Мусор» (иконка мусорной корзины).

Очистка мусора в Clean Master для Android

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

Сканирование системы в Clean Master для Андроид

  1. Поставить галочку напротив пункта «Ненужный кэш». Тогда найденные кэшированные данные будут удалены.

Ненужный кэш для очистки в Clean Master для Android

Удаление кэша приложений в Clean Master для Андроид

Clean Master распространяется бесплатно. Но ряд функций доступен только после покупки программы. Если у телефона недостаточный объем памяти, то полноценная версия будет полезной благодаря переводу неактивных приложений в спящий режим.

Piriform CCleaner

Софт CCleaner получил известность, когда программа использовалась исключительно на компьютерах. Когда смартфоны стали набирать популярность, то компания незамедлительно выпустила софт для мобильных устройств. Сама процедура удаления кэша схожа с той, что используется в приложении Clean Master. Для удаления файлов потребуется следовать инструкции:

  1. Скачать приложение Piriform CCleaner в Play Market.

Скачать CCleaner из Google Маркет для Андроид

  1. Запустить программу и выполнить задачу «Анализировать».

Запуск анализа в CCleaner для Android

  1. Поставить галочку напротив двух пунктов: «Скрытая кэш-память» и «Видимая кэш-память».

Удаление кэша в CCleaner для Android

  1. Подтвердить действие.

Процесс удаления скрытого кэша в CCleaner для Андроид

Завершение очистки мусора с помощью CCleaner для Android

Программа самостоятельно очистит лишние файлы. CCleaner, как и Clean Master, распространяется бесплатно, но некоторые функции доступны только при покупке платной подписки.

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

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

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

Как работает кэш ЦП и что такое L1, L2 и L3?

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

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

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

Итак, насколько важен кеш ЦП и как он работает?

Что такое кэш процессора?

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

Далее у нас есть оперативная память, обычно известная как ОЗУ.Это намного быстрее, чем основное хранилище.

Наконец, у ЦП есть еще более быстрые блоки памяти внутри себя, которые мы называем кешем.

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

Кэш — это статическая RAM (SRAM) по сравнению с системной RAM, которая является динамической RAM (DRAM).Статическая RAM — это та, которая может хранить данные без необходимости постоянного обновления, в отличие от DRAM, что делает SRAM идеальным для использования для кеширования.

Как работает кэш ЦП?

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

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

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

Затем кеш выполняет обмен данными внутри ЦП.Иерархия памяти также существует внутри кеша.

(Если вам интересно узнать, как работает сам ЦП, ознакомьтесь с нашей статьей, объясняющей основы ЦП.)

what-is-cpu-featured


Что такое ЦП и для чего он нужен?

Аббревиатуры в области вычислительной техники сбивают с толку. Что такое ЦП? А мне нужен четырехъядерный или двухъядерный процессор? А как насчет AMD или Intel? Мы здесь, чтобы помочь объяснить разницу!

Уровни кеширования: L1, L2 и L3

Кэш ЦП разделен на три основных «уровня»: L1, L2 и L3.Иерархия здесь снова зависит от скорости и, следовательно, размера кеша.

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

Что касается размера, кеш L1 обычно достигает 256 КБ.Однако некоторые действительно мощные процессоры теперь используют его почти до 1 МБ. Некоторые серверные чипсеты (например, топовые процессоры Intel Xeon) теперь имеют где-то 1-2 МБ кеш-памяти L1.

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

Intel Skylake cache design Изображение предоставлено: Intel

Кэш L2 (уровень 2) медленнее, чем кеш L1, но больше по размеру.Его размер обычно варьируется от 256 КБ до 8 МБ, хотя более новые и мощные процессоры обычно обходятся без этого. Кэш L2 содержит данные, которые, вероятно, будут доступны ЦП в следующий раз. В большинстве современных ЦП кэши L1 и L2 присутствуют на самих ядрах ЦП, причем каждое ядро ​​получает свой собственный кеш.

Кэш L3 (уровень 3) — это самая большая и самая медленная единица кэш-памяти.Он может варьироваться от 4 МБ до 50 МБ. Современные процессоры имеют выделенное место на кристалле процессора для кеш-памяти L3, и он занимает большую часть пространства.

Попадание или промах в кеш и задержка

Данные поступают из ОЗУ в кэш L3, затем в L2 и, наконец, в L1.Когда процессор ищет данные для выполнения операции, он сначала пытается найти их в кэше L1. Если ЦП может его найти, состояние называется попаданием в кеш. Затем он переходит к поиску в L2, а затем в L3.

Если он не находит данные, он пытается получить к ним доступ из основной памяти.Это называется промахом в кэше.

Теперь, как мы знаем, кэш предназначен для ускорения обмена информацией между основной памятью и процессором.Время, необходимое для доступа к данным из памяти, называется задержкой. L1 имеет самую низкую задержку, будучи самым быстрым и ближайшим к ядру, а L3 — самым высоким. Задержка значительно увеличивается при промахе кеша. Это связано с тем, что ЦП должен получать данные из основной памяти.

По мере того, как компьютеры становятся быстрее и лучше, мы наблюдаем уменьшение задержки.Теперь у нас есть оперативная память DDR4 с низкой задержкой и сверхбыстрые твердотельные накопители с низким временем доступа в качестве основного хранилища, что значительно сокращает общую задержку. Если вы хотите узнать больше о том, как работает RAM, вот наше быстрое и грязное руководство по RAM.

Раньше кеш-память L2 и L3 находилась вне ЦП, что отрицательно сказывалось на задержке.

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

Кэш будущего

Дизайн кэша постоянно развивается, особенно по мере того, как память становится дешевле, быстрее и плотнее.Intel и AMD имели свою долю экспериментов с дизайном кеша, а Intel даже экспериментировала с кешем L4. Рынок процессоров сейчас движется вперед быстрее, чем когда-либо.

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

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

Возможно, вы даже слышали об Intel Optane, который можно использовать как своего рода гибридный внешний кеш.Если вы этого не сделали, ознакомьтесь с нашей статьей, посвященной потенциальным приложениям Intel Optane.

amazon-fire-tablet-features

9 советов по Amazon Fire Tablet, которые вы должны попробовать

Ваш планшет Amazon Fire может на многое! Получите от этого максимум пользы с помощью этих советов и рекомендаций.

Об авторе

Палаш Вольвоикар
(Опубликовано 10 статей)

Палаш Вольвоикар — штатный писатель MakeUseOf. В свободное время Палаша можно найти, просматривая контент, изучая литературу или просматривая свой Instagram.

Ещё от Palash Volvoikar

Подпишитесь на нашу рассылку новостей

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

Еще один шаг…!

Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.

.

Что такое OPcache и как его использовать?

OPcache how it works and how to use it with WP Rocket OPcache how it works and how to use it with WP Rocket
Последнее обновление

Поделиться постом

  • Поделиться через фейсбук
  • Поделиться в Twitter

Вы можете ускорить работу своего сайта WordPress примерно в три или более раз с помощью системы кэширования OPcache PHP.

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

Вот более подробная информация об OPcache и о том, как установить его на свой сайт WordPress, чтобы ускорить его.

Что такое кеширование?

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

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

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

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

В результате сайт WordPress загружается быстрее.

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

Подробности вы также можете найти на следующих ресурсах:

Что такое OPcache или кеширование кода операции PHP?

OPcache — это тип кэширования кода OP. Этот вид кеширования компилирует понятный человеку код PHP, который понимает ваш сервер, что называется кодом операции. Это происходит, когда файл PHP загружается на веб-страницу в первый раз. Затем он сохраняется в памяти сервера для более быстрой загрузки при каждом последующем посещении страницы.

Механизмы кеширования байт-кода, такие как OPcache, APC и Xcache, завершают этот процесс при первом запуске файла PHP без необходимости делать это второй или третий раз.

Как работает кэширование кода операции PHP

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

Затем сценарий компилируется в код операции, что делает файл доступным для чтения сервером. Как только это будет сделано, код операции сохраняется в памяти сервера.

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

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

How OPcache works How OPcache works Когда сценарии PHP не находятся в кеше, они кэшируются для последующих загрузок страницы.

Различия между OPcache и APC Cache

OPcache, APC, а также Xcache — это системы кэширования кодов операций. OPcache раньше принадлежал Zend, а Alternative PHP Cache (APC) был бесплатным расширением с открытым исходным кодом для PHP. Xcache также был альтернативным вариантом.

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

К счастью, Zend сделал OPcache открытым исходным кодом и стал доступен как расширение, начиная с версии PHP 5.5. В более ранних версиях у вас есть выбор использовать APC или OPcache, но если вы хотите использовать последний, вам необходимо установить его вручную.

Xcache, с другой стороны, является хорошей альтернативой OPcache в качестве ускорителя PHP.

Ускорит ли OPcache мой сайт на WordPress?

Все три варианта подходят для WordPress, но рекомендуются для PHP версии 5.5 и выше — OPcache. В среднем это ускоряет WordPress в три раза, по крайней мере, для средних и крупных сайтов.

Если у вас небольшой сайт без установленных дополнительных PHP-скриптов или плагинов, вы, скорее всего, не заметите большой разницы.

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

Как установить OPcache на ваш сервер

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

Вот почему вы не найдете никаких вариантов, если будете искать их.

Подробнее читайте в статье «Почему вам нужно как можно скорее перейти на PHP 7+». (и как это сделать прямо сейчас)

Согласно руководству PHP:

«OPcache может быть скомпилирован только как совместно используемое расширение.Если вы отключили создание расширений по умолчанию с помощью –disable-all , вы должны скомпилировать PHP с параметром –enable-opcache , чтобы OPcache стал доступен.
После компиляции вы можете использовать директиву конфигурации zend_extension для загрузки расширения кэширования кода операции OPcache PHP в PHP. Это можно сделать с помощью zend_extension = / full / path / to / opcache.so на платформах, отличных от Windows, и zend_extension = C: \ path \ to \ php_opcache.dll в Windows ».

Когда вы это сделаете, перезапустите PHP, используя SSH.

В Apache введите команду ниже, чтобы перезапустить PHP.

Для Nginx введите следующее:

Как установить OPcache на более ранние версии

Если ваш сервер работает на PHP версий 5.2, 5.3 или 5.4, вы можете вручную установить OPcache, используя команду PECL ниже:

Далее переходим к вам php.ini файл:

Вам необходимо обновить файл php.ini со следующими рекомендуемыми настройками:

Часто можно встретить свой php.ini в файловой системе вашего сайта. Если вы не знаете, как его найти, обратитесь к своему хостинг-провайдеру.

Очистка Opcache с помощью WP Rocket

После установки кеширования OPcache или PHP может потребоваться очистить кеш. Вы можете сделать это одним щелчком мыши с помощью WP Rocket.

После установки плагина на ваш сайт WordPress перейдите в «Настройки »> «WP Rocket » и нажмите кнопку « Purge OPcache ». Вы можете найти его в правой части страницы.

Purge OPcache with WP Rocket Purge OPcache with WP Rocket Вы можете очистить OPcache одним щелчком мыши с помощью WP Rocket.

Вы также можете проверить, что такое OPCache?

Завершение

Для многих владельцев сайтов WordPress на их серверах может уже быть установлена ​​последняя версия PHP. Это означает, что у них уже есть OPcache, автоматически включенный, чтобы значительно ускорить время загрузки страницы для своего сайта.

Для тех, у кого PHP версии 5.2 — 5.4, вы можете вручную установить OPcache, выполнив действия, описанные выше.

У вас установлена ​​последняя версия PHP? У вас есть вопросы о кэшировании кода операции OPcache / PHP? Дайте нам знать в комментариях ниже.

О Дженни Маккиннон

Копирайтер, редактор текстов, веб-разработчик, консультант, инструктор курсов и основатель WP Pros (e), Дженни Маккиннон последние 15 лет занимается разработкой веб-сайтов и почти столько же — WordPress.Она назвала себя ботаником WordPress, любит смотреть «Симпсонов» и называет свои тестовые сайты в честь ссылок из шоу.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *