Скрытые компоненты веб-кэширования

skrytye komponenty veb keshirovaniya?v=1656669373

Ник Карник

0*wIzKPeRpU_xcx6Cb

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

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

Кэш ЦП

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

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

ЦБ также имеют доступ к четырем дополнительным уровням кэш-памяти от кэш-памяти L1 (уровень 1) к кэш-памяти L4 (уровень 4). Архитектура ЦБ и материнской платы определяет, есть ли регистры кэш-памятью L0 или L1. Они также определяют, находятся ли разные уровни на ЦБ или на материнской плате.

0*RZp4MGsUeY5WBF5p
Структура кэш-памяти в некоторых новейших процессорах

диски

Жесткие диски (HDD) медленные по сравнению с энергозависимой оперативной памятью (RAM), но они становятся более быстрыми с твердотельными накопителями (SSD).

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

0*c9StOFkBugF3htST
Кэш-память на диске стремится воспользоваться преимуществами более высокой скорости памяти

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

ОЗУ

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

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

0*lYdjMm5CnJ8PQYBt

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

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

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

0*3dwP0FGAeaLhkaqw
Простой веб-сервер

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

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

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

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

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

0*0pYIm5ZCtHyUNesV
Простой веб-сервер с базой данных

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

Кэширование ответов

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

0*oUpWqEXElez_Ytsu
Ответ и кэш программы

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

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

Функция Memoization

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

0*OgCEejNKL3VnNiPC
Функция Memoization через таблицу поиска

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

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

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

Это очень мощная функция, поскольку она имеет несколько преимуществ:

  • Улучшено взаимодействие с пользователем, поскольку ресурсы быстро загружаются из локального кэша. Нет времени обратной связи (RTT), поскольку запросы не отправляются по проводу
  • Это уменьшает нагрузку на сервер приложений и другие компоненты в конвейере
  • Каждый экономит на оплате ненужной пропускной способности, что освобождает эту пропускную способность для других пользователей Интернета
0*4lXcgXk1zfsB8W6Y
Кэширование браузера

Прокси-сервер

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

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

Давайте рассмотрим всераспространенные варианты прокси-сервера.

Шлюз

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

Переслать прокси

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

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

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

Обратный прокси

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

Edge Caching

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

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

0*bLYYC2v9zwIF5qNV
Прокси-серверы в конвейере запросов

Закрытие

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

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

Наконец, вот некоторые из преимуществ, которые мы получаем от кэширования:

  • Уменьшенная задержка улучшает время отклика.
  • Улучшенное время обратной связи (RTT) благодаря меньшему веб-трафику.
  • Более высокая пропускная способность, чтобы выходной сервер мог обслуживать больше запросов.
  • Уменьшенное потребление пропускной способности уменьшает сетевой трафик и перегрузку сети. Это означает, что фактическое некэшированное содержимое извлекается гораздо быстрее.
  • Обслуживание документов из соседнего кэша прокси минимизирует задержку передачи.
  • Рабочая нагрузка исходящего веб-сервера уменьшается, поскольку разные кэши в Интернете обслуживают данные.
  • В случае, если удаленный сервер может быть недоступен из-за сбоя или проблемы с сетью, можно получить кэшированную копию ресурсов через прокси.

Если эта статья была полезной,??? и следите за мной в Twitter.

Расширение GitHub для повышения вашей производительности
Вот расширение GitHub, которое я использую. Они позволят вам повысить производительность GitHub. Пожалуйста, поделитесь своими…medium.freecodecamp.org

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

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