Кэширование и производительность веб-приложений / Хабр
Кэширование позволяет увеличивать производительность веб-приложений за счёт использования сохранённых ранее данных, вроде ответов на сетевые запросы или результатов вычислений. Благодаря кэшу, при очередном обращении клиента за одними и теми же данными, сервер может обслуживать запросы быстрее. Кэширование — эффективный архитектурный паттерн, так как большинство программ часто обращаются к одним и тем же данным и инструкциям. Эта технология присутствует на всех уровнях вычислительных систем. Кэши есть у процессоров, жёстких дисков, серверов, браузеров.
Ник Карник, автор материала, перевод которого мы сегодня публикуем, предлагает поговорить о роли кэширования в производительности веб-приложений, рассмотрев средства кэширования разных уровней, начиная с самого низкого. Он обращает особое внимание на то, где именно могут быть кэшированы данные, а не на то, как это происходит.
Мы полагаем, что понимание особенностей систем кэширования, каждая из которых вносит определённый вклад в скорость реакции приложений на внешние воздействия, расширит кругозор веб-разработчика и поможет ему в деле создания быстрых и надёжных систем.
Процессорный кэш
Начнём наш разговор о кэшах с самого низкого уровня — с процессора. Кэш-память процессора — это очень быстрая память, которая играет роль буфера между процессором (CPU) и оперативной памятью (RAM). Кэш-память хранит данные и инструкции, к которым обращаются чаще всего, благодаря чему процессор может получать ко всему этому доступ практически мгновенно.
В процессорах имеется особая память, представленная регистрами процессора, которая обычно представляет собой небольшое хранилище информации, обеспечивающее крайне высокую скорость обмена данными. Регистры — это самая быстрая память, с которой может работать процессор, которая расположена максимально близко к остальным его механизмам и имеет небольшой объём. Иногда регистры называют кэшем нулевого уровня (L0 Cache, L — это сокращение от Layer).
У процессоров, кроме того, имеется доступ к ещё нескольким уровням кэш-памяти. Это — до четырёх уровней кэша, которые, соответственно, называются кэшами первого, второго, третьего, и четвёртого уровня (L0 — L4 Cache).
Структура памяти в некоторых новейших CPU
Кэш жёсткого диска
Жёсткие диски (HDD, Hard Disk Drive), применяемые для постоянного хранения данных — это, в сравнении с оперативной памятью, предназначенной для кратковременного хранения информации, устройства довольно медленные. Однако надо отметить, что скорость постоянных хранилищ информации увеличивается благодаря распространению твердотельных накопителей (SSD, Solid State Drive).
В системах долговременного хранения информации кэш диска (его ещё называют буфером диска или кэширующим буфером) — это встроенная в жёсткий диск память, которая играет роль буфера между процессором и физическим жёстким диском.
Кэш жёсткого диска
Дисковые кэши работают, исходя из предположения, что когда на диск что-то пишут, или с него что-то читают, есть вероятность того, что в ближайшем будущем к этим данным будут обращаться снова.
О быстродействии жёстких дисков и оперативной памяти
Разница между временным хранением данных в оперативной памяти и постоянным хранением на жёстком диске проявляется в скорости работы с информацией, в стоимости носителей и в близости их к процессору.
Время отклика оперативной памяти составляет десятки наносекунд, в то время как жёсткому диску нужны десятки миллисекунд. Разница в быстродействии дисков и памяти составляет шесть порядков!
Одна миллисекунда равна миллиону наносекунд
Простой веб-сервер
Теперь, когда мы обсудили роль кэширования в базовых механизмах компьютерных систем, рассмотрим пример, иллюстрирующий применение концепций кэширования при взаимодействии клиента, представленного веб-браузером, и сервера, который, реагируя на запросы клиента, отправляет ему некие данные. В самом начале у нас имеется простой веб-сервер, который, отвечая на запрос клиента, считывает данные с жёсткого диска. При этом представим, что между клиентом и сервером нет никаких особых систем кэширования. Вот как это выглядит.
Простой веб-сервер
При работе вышеописанной системы, когда клиент обращается напрямую к серверу, а тот, самостоятельно обрабатывая запрос, читает данные с жёсткого диска и отправляет клиенту, без кэша всё-таки не обходится, так как при работе с диском будет задействован его буфер.
При первом запросе жёсткий диск проверит кэш, в котором, в данном случае, ничего не будет, что приведёт к так называемому «промаху кэша». Затем данные считаются с самого диска и попадут в его кэш, что соответствует предположению, касающемуся того, что эти данные могут понадобиться снова.
При последующих запросах, направленных на получение тех же данных, поиск в кэше окажется успешным, это — так называемое «попадание кэша».
Кэширование баз данных
Усложним наш пример, добавим сюда базу данных. Запросы к базам данных могут быть медленными и требовать серьёзных системных ресурсов, так как серверу баз данных, для формирования ответа, нужно выполнять некие вычисления. Если запросы повторяются, кэширование их средствами базы данных поможет уменьшить время её отклика. Кроме того, кэширование полезно в ситуациях, когда несколько компьютеров работают с базой данных, выполняя одинаковые запросы.
Простой веб-сервер с базой данных
Большинство серверов баз данных по умолчанию настроены с учётом оптимальных параметров кэширования. Однако, существует множество настроек, которые могут быть модифицированы для того, чтобы подсистема баз данных лучше соответствовала особенностям конкретного приложения.
Кэширование ответов веб-сервера
Продолжим развивать наш пример. Теперь веб-сервер, раньше рассматриваемый как единая сущность, разбит на две части. Одна из них, собственно веб-сервер, теперь занимается взаимодействием с клиентами и с серверным приложением, которое уже работает с системами хранения данных. Веб-сервер можно настроить так, чтобы он кэшировал ответы, в результате ему не придётся постоянно отправлять серверному приложению похожие запросы. Похожим образом, основное приложение может кэшировать некоторые части собственных ответов на ресурсоёмкие запросы к базе данных или на часто встречающиеся запросы файлов.
Кэш ответов и кэш приложения
Ответы веб-сервера кэшируются в оперативной памяти. Кэш приложения может храниться либо локально, в памяти, либо на специальном кэширующем сервере, который использует базу данных, вроде Redis, которая хранит данные в оперативной памяти.
Мемоизация функций
Сейчас поговорим об оптимизации производительности серверного приложения за счёт мемоизации. Это — разновидность кэширования, применяемая для оптимизации работы с ресурсоёмкими функциями. Данная техника позволяет выполнять полный цикл вычислений для определённого набора входных данных лишь один раз, а при следующих обращениях к функции с теми же входными данными сразу выдавать найденный ранее результат. Мемоизация реализуется посредством так называемых «таблиц поиска» (lookup table), хранящих ключи и значения. Ключи соответствуют входным данным функции, значения — результатам, которые возвращает функция при передаче ей этих входных данных.
Мемоизация функции с помощью таблицы поиска
Мемоизация — это обычный приём, используемый для повышения производительности программ. Однако он может быть не особенно полезным при работе с ресурсоёмкими функциями, которые вызываются редко, или с функциями, которые, и без мемоизации, работают достаточно быстро.
Кэширование в браузере
Теперь перейдём на сторону клиента и поговорим о кэшировании в браузерах.
Этот кэш используется, когда в ответе сервера содержатся правильно настроенные 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). Например, если вы посещаете популярный веб-сайт и загружаете какие-нибудь статические данные, они попадают в кэш. Каждый следующий пользователь, запросивший те же данные, получит их, до истечения срока их кэширования, с кэширующего сервера. Эти серверы, определяя актуальность информации, ориентируются на серверы, хранящие исходные данные.
Прокси-серверы в инфраструктуре обмена данными между клиентом и сервером
Итоги
В этом материале мы рассмотрели различные уровни кэширования данных, применяющиеся в процессе обмена информацией между клиентом и сервером. Веб-приложения не могут мгновенно реагировать на воздействия пользователя, что, в частности, связано, для действий, требующих обмена данными с серверами этих приложений, с необходимостью выполнения неких вычислений перед отправкой ответа. Во время, необходимое для передачи данных от сервера клиенту, входит и время, необходимое для поиска необходимых данных на диске, и сетевые задержки, и обработка очередей запросов, и механизмы регулирования полосы пропускания сетей, и многое другое. Если учесть, что всё это может происходить на множестве компьютеров, находящихся между клиентом и сервером, то можно говорить о том, что все эти задержки способны серьёзно увеличить время, необходимое для прихода запроса на сервер и получения клиентом ответа.
Правильно настроенная система кэширования способна значительно улучшить общую производительность сервера. Кэши сокращают задержки, неизбежно возникающие при передаче данных по сети, помогают экономить сетевой трафик, и, в результате, уменьшают время, необходимое для того, чтобы браузер вывел запрошенную у сервера веб-страницу.
Уважаемые читатели! Какие технологии кэширования вы используете в своих проектах?
Что такое кэширование?—ArcGIS Server | Документация для ArcGIS Enterprise
Кэширование карт — это способ ускорить работу ваших картографических сервисов и сервисов изображений. При создании кэша карты сервер отрисовывает карту на нескольких уровнях масштабирования и сохраняет копии этих изображений. После этого, когда кто-нибудь запрашивает карту, сервер может предоставить эти изображения. Всякий раз, когда сервер получает запрос на карту, он гораздо быстрее возвратит кэшированное изображение, чем заново нарисует карту. Другое преимущество кэширования состоит в том, что высокая детализация изображения не сказывается на времени предоставления информации.
Что происходит во время процесса кэширования?
Кэширование не происходит автоматически. Чтобы создать кэш, сначала нужно разработать карту, а затем предоставить ее для совместного использования. После этого нужно задать параметры кэша и начать создание листов. Можно создать все листы сразу или предоставить возможность формирования некоторых листов при необходимости, т.е. при первом обращении к ним.
При кэшировании карты вы отрисовываете ее на нескольких заданных уровнях масштабирования, чтобы затем пользователи смогли приближать и отдалять карту. При выборе параметров кэша нужно определить, какие масштабы требуется кэшировать. Если это просто первая проба инструментов кэширования, можно разрешить компьютеру выбрать какие-то масштабы. Однако обычно масштабы заранее подбирают так, чтобы обеспечить качественное отображение карты в каждом из этих масштабов. Следует записать масштабы и использовать их при разработке карт в ArcGIS Pro. Когда придет время создавать кэш, нужно указать эти масштабы в настройках инструмента создания кэша.
Есть и другие параметры, которые важно понимать при создании кэша. Дополнительную информацию см. в разделе Редактирование свойств кэширования сервиса в ArcGIS Server Manager.
Кэш хранится в директории кэша вашего сервера. При установке ArcGIS Server директория кэша сервера создается в локальной папке. При добавлении дополнительных ГИС-серверов для поддержки сайта следует настроить общий доступ к директории кэша сервера (используя опции операционной системы, такие как общий доступ к файлам Windows), для того чтобы она была доступна с других задействованных компьютеров.
Выбираемые масштабы и устанавливаемые значения параметров кэша составляют схему листов. В каждом кэше есть файл схемы листов, который можно импортировать при создании кэшей, чтобы все кэши использовали одни и те же размеры листов и масштабы. Это как правило помогает поднять производительность веб-приложений, содержащих более одного кэшированного сервиса. Дополнительно можно использовать именно ту схему листов, которая используется в ArcGIS Online, Bing Maps и Google Maps. Это позволит производить наложение ваших листов кэша на листы этих картографических онлайн-сервисов.
Можно ли кэшировать все карты?
Кэш карты представляет собой снимок карты в какой-то момент времени. Поэтому кэш прекрасно работает для таких карт, которые нечасто меняются. К таким случаям относятся карты общего назначения, карты данных аэрофотосъемки и топокарты.
Если даже данные изменяются, все равно можно использовать кэширование, периодически обновляя кэш с помощью соответствующих инструментов. Также настраивается график автоматического запуска таких обновлений. Чтобы понять — можно ли кэшировать карту, которая часто меняется, полезно ответить на такие вопросы:
Насколько актуальной должна быть моя карта?
Если необходимо, чтобы данные на карте были «живыми», если недопустима временная задержка, кэширование неприемлемо. Однако если короткая задержка допустима, и за это временное окно кэш можно обновить, кэширование можно применять.
Насколько велик кэш и насколько широко распространены изменения данных?
Эти два вопроса дополняют друг друга. Большой кэш требует больше времени на создание. Практичней обновлять большой кэш только в случае, если есть возможность изолировать область изменений и обновлений. Если кэш невелик, можно позволить себе быструю перестройку всего кэша.
Если обновления нельзя выполнить за приемлемое время, кэширование для такой карты неудобно.
После решения перечисленных вопросов используйте кэширование в тех случаях, где оно подходит. Повышение производительности, пожалуй, наиболее ценное преимущество, получаемое при создании и обновлении кэша.
Дополнительная информация об обновлении кэша сервера находится в разделе Обновления кэша карты.
Будут ли исходные ГИС-данные доступны после создания пакета листов?
Хотя кэши карты представляют собой изображения данных, вы сможете предоставить доступ к исходным данным картографического сервиса для выполнения задач поиска, идентификации и выполнении запросов. Эти инструменты получают с сервера географические положения объектов и возвращают результаты. Приложение выводит поверх кэшированного изображения результаты в формате исходного графического слоя.
Как начать кэширование?
Для начала кэширования необходимо опубликовать картографический сервис или сервис изображений. В рамках процесса публикации вы зададите свойства сервиса. Здесь можно определить масштабы и экстент кэша. Для получения дополнительной информации см. раздел Публикация сервиса в ArcGIS Pro.
Вы можете создать листы при публикации сервиса (что подходит для небольшого кэша) или сформировать кэш самостоятельно после публикации (подходит для большого кэша, когда вы хотите географически ограничить кэш, формируемый для больших масштабов). Если вы создаете кэш самостоятельно, используйте инструмент геообработки Управление листами кэша картографического сервиса из набора инструментов Серверные инструменты.
Компоненты программного обеспечения, необходимые для создания и поддержки кэша карт
Ниже приведен обзор компонентов программного обеспечения, о которых нужно знать при создании и управлении кэшами карт.
Инструмент Создать схему листов кэша картографического сервиса
Инструмент Создать схему листов кэша картографического сервиса позволяет создавать схему листов для карты, которая включает масштабы для кэширования, систему координат кэша и другие крайне важные свойства. В итоге инструмент создает файл схемы листов в формате XML. При создании кэша можно указать файл схемы листов, чтобы загрузить эти свойства.
Рекомендуется создавать схему листов с помощью этого инструмента и использовать ее для множества кэшей внутри организации.
Инструмент Управление листами кэша картографического сервера
Инструмент Управление листами кэша картографического сервера позволяет создавать, изменять и удалять листы в существующем кэше. Открыть этот инструмент можно, щелкнув правой кнопкой мыши на дереве каталога и выбрав Управление кэшем > Управление листами.
Так как Управление листами кэша картографического сервера является инструментом геообработки, его можно использовать в скрипте подобно любому другому инструменту для помощи при обновлении кэша на регулярной основе.
Директория кэша
Директория кэша ArcGIS Server – это папка на диске или в облачном хранилище, в которой хранятся листы кэша.
Можно открыть директорию кэша для проверки листов кэша и файла схемы листов conf.xml. Директория кэша также может содержать статус файловой базы геоданных.gdb, который содержит информацию о том, какие листы были построены.
На рисунке ниже показан полистный формат кэша в Windows Explorer, где каждый лист хранится в отдельном файле. В компактном формате кэша используются большие файлы, называемые пакетами, которые хранят несколько листов.
Отзыв по этому разделу?
Что такое кэширование и как оно работает? – Определение TechTarget
К
- Роберт Шелдон
Кэширование — произносится как «кэширование» — это процесс хранения данных в кэше, который представляет собой область временного хранения, облегчающую более быстрый доступ к данным с целью повышения производительности приложений и системы.
Типичным примером кэширования является веб-браузер, который сохраняет содержимое страницы на локальном диске в течение определенного периода времени. Когда пользователь впервые посещает веб-сайт, содержимое загружается с веб-сервера и сохраняется в локальном каталоге. Если пользователь повторно посещает веб-сайт, контент поступает из локального кеша, а не с сервера. Таким образом, содержимое страницы загружается в браузер намного быстрее, чем если бы оно было загружено с веб-сервера. Это экономит время пользователя, уменьшает сетевой трафик и минимизирует нагрузку на веб-сервер.
Идея кэширования заключается во временном копировании данных в расположение, которое позволяет приложению или компоненту получать доступ к данным быстрее, чем при извлечении их из основного источника.
Кэш-память — это блок памяти, отдельный от основной памяти, доступ к которому осуществляется до основной памяти. Веб-браузер, например, может получить доступ к данным из кэша локального диска быстрее, чем через интернет-соединение с веб-сервером.
Тот же принцип, который применяется к кэшированию в Интернете, относится и к множеству других типов кэширования:
- Кэширование ЦП. Большинство центральных процессоров (ЦП) включают в себя высокоскоростные кэши, такие как L1 и L2, которые расположены между основной памятью компьютера и процессором, предоставляя ЦП более быстрый доступ к наборам команд программы, чем может предоставить основная память.
- Кэширование в памяти. Приложения часто используют оперативную память системы для кэширования данных, хранящихся на диске. Например, система управления базами данных (СУБД) может использовать кэширование для рабочих нагрузок с большим количеством операций чтения или сложных запросов 9.
0005
- Кэширование виртуальной памяти. Блок управления памятью компьютера (MMU) часто включает в себя буфер поиска перевода (TLB) для кэширования последних преобразований между виртуальными и физическими адресами.
- Кэширование на стороне сервера. Веб-приложения часто кэшируют данные, поступающие из других систем. Например, веб-приложение может кэшировать данные, которые оно регулярно извлекает из серверной базы данных.
- Кэширование CDN. Сети доставки контента (CDN) хранят кэшированные данные на нескольких прокси-серверах, которые географически распределены, чтобы предоставлять контент пользователям, находящимся ближе к месту их проживания, что помогает повысить производительность веб-приложения.
- Кэширование контроллера хранилища.
Контроллер системы хранения может включать локальный кэш для упрощения операций ввода-вывода (I/O). Кэш контроллера может улучшить работу между контроллером и приложением, а также между контроллером и диском.
- Кэширование DNS. Серверы системы доменных имен (DNS) часто кэшируют данные поиска DNS, чтобы ускорить преобразование имен хостов в адреса интернет-протокола (IP).
Это лишь некоторые из способов использования кэширования для повышения производительности, поэтому эта технология так распространена. Кэширование, однако, также может иметь свои недостатки. Например, браузер может кэшировать конфиденциальные данные, которые могут быть скомпрометированы, или кэшированные данные могут устареть или не синхронизироваться с исходными данными. Если кеш становится слишком большим, это может негативно сказаться на производительности.
Кэширование также может снизить производительность, если кэшируются неправильные данные. При использовании кэширования приложение сначала проверяет кэш на наличие необходимых ему данных. Если он находит данные, это попадание в кеш. Если оно не находит данные, это означает промах в кеше, и приложение должно извлечь данные из основного источника, добавив дополнительный шаг к процессу извлечения данных. Когда промахов слишком много, приложение может работать хуже, чем если бы кэширование не было реализовано.
Кэширование должно быть тщательно спланировано для оптимального выбора как данных для кэширования, так и продолжительности хранения данных. Например, если данные часто изменяются, вы можете ограничить время хранения данных в кэше или вообще не кэшировать их. Ваш подход к кэшированию будет зависеть от типа кэша, характера данных и приложений, обращающихся к данным.
Узнайте разницу между кешем и оперативной памятью , узнайте, как Получите максимальную отдачу от устройств облачного кэширования и шлюзов и изучите основные преимущества CDN для современного предприятия .
Последнее обновление: январь 2023 г.
Продолжить чтение О кэшировании- Кэш и уровень: в чем разница между кешем и хранилищем?
- Рассмотрите эти ключевые стратегии кэширования микросервисов
- Одноранговое кэширование SCCM сейчас важнее, чем когда-либо
- Может ли установка заголовка управления кэшем повысить безопасность данных приложения?
- Как настроить браузеры, чтобы избежать отравления веб-кэша
когнитивное искажение
Когнитивное искажение — это систематический мыслительный процесс, вызванный склонностью человеческого мозга к упрощению обработки информации через фильтр личного опыта и предпочтений.
Сеть
- факс
Факс — сокращение от «факсимиле» и иногда называемый «телекопированием» — это телефонная передача отсканированных печатных .
..
- Закрыть сеть
Сеть Clos — это тип неблокируемой многоступенчатой коммутационной сети, используемой сегодня в коммутационных фабриках крупных центров обработки данных.
- коллизия в сети
В полудуплексной сети Ethernet коллизия возникает в результате попытки двух устройств в одной сети Ethernet передать…
Безопасность
- маскировка
Маскировка – это метод, при котором пользователям возвращается версия веб-контента, отличная от той, которую получают сканеры поисковых систем.
- Вредоносное ПО TrickBot
TrickBot — это сложное модульное вредоносное ПО, которое начиналось как банковский троян, а затем эволюционировало, чтобы поддерживать множество различных типов …
- Общая система оценки уязвимостей (CVSS)
Общая система оценки уязвимостей (CVSS) — это общедоступная система оценки серьезности уязвимостей безопасности в .
..
ИТ-директор
- качественные данные
Качественные данные — это информация, которую невозможно подсчитать, измерить или выразить с помощью чисел.
- зеленые ИТ (зеленые информационные технологии)
Green IT (зеленые информационные технологии) — это практика создания и использования экологически устойчивых вычислительных ресурсов.
- Agile-манифест
Манифест Agile — это документ, определяющий четыре ключевые ценности и 12 принципов, в которые его авторы верят разработчики программного обеспечения…
HRSoftware
- опыт кандидата
Опыт кандидата отражает отношение человека к прохождению процесса подачи заявления о приеме на работу в компанию.
- непрерывное управление производительностью
Непрерывное управление эффективностью в контексте управления человеческими ресурсами (HR) — это надзор за работой сотрудника .
..
- вовлечения сотрудников
Вовлеченность сотрудников — это эмоциональная и профессиональная связь, которую сотрудник испытывает к своей организации, коллегам и работе.
Служба поддержки клиентов
- распознавание голоса (распознавание говорящего)
Распознавание голоса или говорящего — это способность машины или программы принимать и интерпретировать диктовку или понимать и …
- Облачная служба Salesforce
Salesforce Service Cloud — это платформа управления взаимоотношениями с клиентами (CRM), позволяющая клиентам Salesforce предоставлять услуги и …
- БАНТ
BANT — это аббревиатура от «Budget, Authority, Need, Timing».
Ускоренный курс по кэшированию. Часть 1
Кэширование — это фундаментальный метод вычислений, позволяющий быстро извлекать часто используемые данные. Исследование, проведенное Amazon, показало, что увеличение времени загрузки страницы всего на 100 миллисекунд снижает продажи на 1%. Сохраняя часто используемые данные в быстродействующем хранилище, обычно в памяти, кэширование повышает скорость извлечения данных и повышает общую производительность системы. Это подчеркивает значительное влияние кэширования на пользовательский опыт и, в конечном счете, на успех бизнеса.
Ниже приведен список тем, которые мы рассмотрим в этой серии.
Определение: согласно Википедии: « В вычислительной технике кеш — это аппаратный или программный компонент, который хранит данные, чтобы будущие запросы на эти данные могли обслуживаться быстрее; данные, хранящиеся в кэше, могут быть результатом более ранних вычислений или копией данных, хранящихся в другом месте ».
Давайте рассмотрим конкретный пример.
Когда запрос клиент/сервер выполняется без кэширования, клиент отправляет запрос службе, которая затем извлекает данные из хранилища и отправляет их обратно клиенту. Однако извлечение данных из хранилища может стать медленным и перегруженным из-за больших объемов трафика.
Добавление кэша в систему может помочь преодолеть эти ограничения. При запросе данных служба сначала проверяет наличие данных в кеше. Если данные присутствуют в кеше, они быстро возвращаются в сервис. Если данные не найдены в кеше, служба извлекает их из хранилища, сохраняет в кеше и затем отвечает клиенту. Это позволяет быстрее извлекать часто используемые данные, поскольку кеш обычно хранит данные в памяти в структуре данных, оптимизированной для быстрого доступа.
Системы кэширования и системы хранения различаются по нескольким параметрам. Во-первых, системы кэширования хранят часто используемые данные в памяти. Системы хранения хранят данные на дисках. Поскольку память дороже диска, системы кэширования обычно имеют гораздо меньшую емкость данных, чем системы хранения. Это означает, что системы кэширования могут хранить только часть общего набора данных.
Во-вторых, данные, хранящиеся в кэш-системах, не предназначены для долговременного сохранения и устойчивости данных. Кэш-системы используются для повышения производительности. Они не обеспечивают надежного хранения данных. Напротив, системы хранения предназначены для обеспечения долговременной сохранности и надежности данных, гарантируя, что данные всегда доступны, когда это необходимо.
Наконец, системы кэширования оптимизированы для поддержки интенсивного трафика и высокой степени параллелизма. Сохраняя данные в памяти, кэш-серверы могут быстро реагировать на входящие запросы, что крайне важно для веб-сайтов или приложений с высокой посещаемостью. С другой стороны, системы хранения лучше подходят для надежного хранения больших объемов данных и управления ими.
Если запрошенные данные доступны в кэше, это называется попаданием в кэш , в противном случае это называется промахом в кэше . Поскольку доступ к данным из кэша значительно быстрее, чем доступ к ним из хранилища, система в целом работает более эффективно при большем количестве попаданий в кэш. Эффективность кэша измеряется отношением попаданий в кэш , которое представляет собой количество попаданий в кэш, деленное на количество запросов в кэш. Более высокие коэффициенты указывают на лучшую общую производительность.
Хотя в предыдущем примере было продемонстрировано кэширование в клиент-серверных вычислениях, стоит отметить, что кэширование широко используется в современных компьютерных и программных системах.
Современные компьютеры используют несколько уровней кэш-памяти, включая кэш-память L1, L2 и L3, чтобы обеспечить быстрый доступ к часто используемым данным для ЦП.
Блок управления памятью (MMU) отвечает за сопоставление адресов виртуальной памяти с адресами физической памяти. MMU содержит специализированный кэш, называемый резервным буфером перевода (TLB), в котором хранятся последние использованные преобразования адресов для ускорения процесса преобразования адресов.
Операционная система использует кэш страниц в основной памяти для повышения общей производительности системы. Кэш страниц хранит часто используемые страницы данных и уменьшает количество обращений к диску, что может замедлить работу системы.
Используя эти различные уровни кэш-памяти, современные компьютеры могут повысить общую производительность и эффективность.
В программных системах кэширование играет решающую роль в повышении производительности и уменьшении сетевых задержек.
Браузеры используют кэш для хранения изображений, данных и документов часто используемых веб-сайтов, что ускоряет загрузку и обеспечивает более плавный просмотр. Этот кеш широко известен как кеш браузера.
Сети доставки контента (CDN) — это еще одна форма кэширования, используемая для доставки статических ресурсов, таких как изображения, видео, файлы CSS и другой мультимедийный контент. CDN — это географически распределенная сеть прокси-серверов, которые работают вместе для доставки контента с ближайшего сервера в местоположение пользователя. Это значительно сокращает время, необходимое для доступа к контенту, что приводит к более быстрой загрузке веб-сайта.
Кэширование в базах данных необходимо для повышения производительности и снижения накладных расходов на выполнение. Некоторые типичные кэши, встречающиеся в базах данных, включают кэш буферов, кэш результатов, кэш запросов, кэш метаданных и кэш сеансов. Эти кэши хранят часто используемые блоки данных, результаты запросов, метаданные и информацию о сеансе в памяти, чтобы сократить количество операций чтения с диска и время выполнения запросов, что приводит к более быстрому времени ответа на запросы и лучшему взаимодействию с пользователем.
Двумя широко используемыми системами кэширования являются Memcached и Redis. Это высокопроизводительные распределенные системы кэширования с открытым исходным кодом, которые можно использовать для быстрого хранения и извлечения данных.
Реальные варианты использования кэширования включают локальное хранение исторических электронных писем, чтобы избежать повторного извлечения одних и тех же данных с сервера, кэширование популярных твитов на веб-сайтах социальных сетей, таких как Twitter, а также предварительную загрузку и кэширование информации о продуктах для систем быстрой продажи, чтобы предотвратить чрезмерное давление на базу данных.