Що таке кеш? Як кешовані дані пришвидшують роботу

Що таке кеш? Як кешовані дані пришвидшують роботу

Сучасний процесор може витягти значення з найближчого кешу менш ніж за наносекунду. Звернення до основної пам'яті за тим самим значенням займає приблизно в сто разів більше часу. Тож чіп робить очевидну річ: він зберігає копію даних, які йому, ймовірно, знадобляться, поруч із собою. Ця копія і є кешем, і цей трюк повторюється на кожному рівні обчислень, від кремнію у вашому процесорі до сервера, який доставив цю сторінку. У цьому посібнику пояснюється, що таке кеш, як працює кешування, де він тихо знаходиться, і чи варто його очищувати.

Визначення кешу: що таке кеш насправді

Кеш – це тимчасове сховище. Маленьке, швидке та розміщене якомога ближче до того, що його потребує. Він містить копії даних, які система очікує знову використовувати, щоб, коли настане відповідний момент, вона могла отримати копію, замість того, щоб повторювати повільну або дорогу роботу. Відкрийте цю сторінку вдруге, і значна її частина завантажиться з копії, яка вже знаходиться на вашому комп’ютері, а не з сервера.

Тимчасовий – це слово, яке тут виконує найважчу роботу. Кешовані дані ніколи не є оригіналом. Це дублікат, який зберігається виключно для швидкості, і ви можете видалити його, коли забажаєте. Видаліть його, і нічого цінного не зникне. Система просто повертається до справжнього джерела та відновлює копію. Ваш банківський баланс не знаходиться в кеші; копія веб-сторінки, яка показує цей баланс, може. Цей проміжок між джерелом достовірної інформації та одноразовою копією є єдиною причиною, чому кешування безпечне для використання. У найгіршому випадку копія відсутня або неправильна, система знизує плечима, отримує дані з джерела та продовжує роботу.

Як працюють кеші: потрапляння в кеш, промахи та вилучення

Кожен кеш, скрізь, працює над одним питанням: чи є в мене вже копія цього? «Так» означає швидку відповідь. Надати копію, пропустити повільний шлях, готово. «Ні» означає, що ви виконуєте повільну роботу один раз: отримуєте з джерела, повертаєте результат і зберігаєте копію на виході, щоб майбутні запити були швидкими. Ось і весь механізм. Решта — це бухгалтерія навколо двох заплутаних проблем, а саме: що викидати, коли місця мало, і як уникнути повернення копії, яка застаріла.

Попадання в кеш проти промаху в кеш

Знайшли? Це потрапляння в кеш. Немає? Промах кешу, що змушує звернутися до повільнішого сховища даних. Частка запитів, які завершуються потраплянням, називається коефіцієнтом потрапляння, і це єдине число, яке насправді стежать інженери. Мережа доставки контенту, яка обслуговує статичні файли, такі як зображення та таблиці стилів, прагне досягти від 95 до 99 відсотків. Якщо досягти цього, майже кожен відвідувач отримає найближчу копію, тоді як вихідний сервер майже не торкається його. Низький коефіцієнт потрапляння означає, що кеш здебільшого служить декорацією.

Коли кеш заповнюється: правила виселення

Кеш навмисно маленький. Швидке зберігання коштує грошей, тому ніколи не вистачає місця для всього, і як тільки кеш заповнюється, щось має зникнути. Правило, яке вибирає переможеного, — це політика виселення. Звичайним значенням за замовчуванням є «Найменше використовуване» або LRU: видаляється все, що лежало недоторканим найдовше, роблячи ставку на те, що те, що ви ігнорували останнім часом, ви будете ігнорувати й надалі. Інші схеми враховують інакше. «Найменше використовуване» (LFU) відстежує, як часто здійснюється доступ до кожного елемента. «Перший прийшов, перший вийшов» (FIFO) просто видаляє найстаріший запис. Та сама авантюра, різний одяг. Кожна політика — це насправді здогадка, яку копію ви найменше пропустите.

Збереження актуальності копій: політики TTL та запису

Копія хороша лише тоді, коли вона відповідає джерелу. Тому більшість кешів позначають кожен запис часом життя або TTL: зворотним відліком, після якого копія вважається такою, що прострочилася, і її потрібно повторно перевірити або повторно завантажити. В Інтернеті заголовок Cache-Control встановлює цей час. Книга правил — RFC 9111 , а її директива max-age дозволяє відповіді залишатися кешованою до року або 31 536 000 секунд, якщо вам потрібна точна цифра. Записи — це інша половина проблеми. Наскрізний запис зберігає дані в кеші та джерелі одночасно, що безпечно, але повільніше. Зворотний запис зберігає дані в кеші зараз, а в джерелі пізніше, що швидко, але залишає короткий проміжок часу, коли ці два параметри розходяться. Виберіть свій компроміс.

що таке кеш

Типи кешу: від процесора до мережі доставки контенту

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

Кешування пам'яті: рівні кешу процесора L1, L2, L3

Найшвидше кешування відбувається в самому процесорі. Сучасні процесори мають три рівні кешу, побудованого з SRAM, типу пам'яті, який набагато швидший, ніж DRAM, що використовується для основної пам'яті, і набагато дорожчий за байт. L1 крихітний і майже миттєвий, кілька десятків кілобайт на ядро обробляють дані приблизно за наносекунду. L2 більший і трохи повільніший. L3 ще більший і розподіляється між ядрами; Intel Core i9-14900K постачається з 36 МБ кешу, а AMD Ryzen 9 7950X3D розширює L3 до 128 МБ. Все це існує для того, щоб замаскувати одну прогалину: вилучення даних з L1 займає менше наносекунди, тоді як основна пам'ять DDR5 займає близько 70, що приблизно в сто разів різниця. Кеші працюють, тому що програми повторно використовують ті самі дані та дані, що знаходяться поруч з ними, звичка, яка називається локальністю посилання.

Шар Типовий розмір Типовий час доступу Що в ньому є
Кеш процесора L1 32-80 КБ на ядро ~0,7-1 нс Наступні інструкції та значення
Кеш процесора L2 0,5-2 МБ на ядро ~3-4 нс Нещодавно використані дані поблизу ядра
Кеш процесора L3 16-128 МБ спільного доступу ~10-20 нс Дані, що обмінюються між ядрами
Основна пам'ять (ОЗП) 8-64 ГБ ~70-100 нс Запущені програми та активні дані
SSD-накопичувач 256 ГБ–4 ТБ ~50-100 мкс Файли та операційна система
Крайовий вузол CDN змінюється ~20 мс через мережу Веб-копії поруч із відвідувачем
Початковий сервер змінюється ~100-200 мс міжрегіонально Джерело істини

Кеші дисків, ОС та програм

Над апаратним забезпеченням програмне забезпечення зберігає власні кеші. Ваша операційна система зберігає часто використовувані дані, такі як нещодавно прочитані файли, у вільній оперативній пам'яті, тому їх повторне відкриття відбувається миттєво. Бази даних кешують результати поширених запитів. Програми додають спеціальний шар в пам'яті, часто Redis або Memcached, який розміщується між програмою та її базою даних і відповідає на повторювані запити за мікросекунди. Завдання ідентичне завданню процесора: зберігати гарячі дані у швидшому сховищі, щоб не платити двічі за повільну роботу.

Кешування на стороні сервера та CDN

Зовнішній рівень охоплює весь Інтернет. Коли веб-сервер кешує готові сторінки, він уникає їх перебудови для кожного відвідувача. Мережа доставки контенту йде далі, копіюючи ці ресурси на периферійні сервери, розподілені по всьому світу, тому на кожен запит відповідає машина, фізично розташована поруч із користувачем. Звернення до периферійної мережі CDN може повернутися приблизно за 20 мілісекунд, порівняно зі 100-200 мілісекундами, коли запит має перетинати континенти до місця походження. Ця модель зараз домінує в Інтернеті: до 2024 року приблизно 75 відсотків стороннього контенту обслуговувалося через CDN.

Кеш браузера: що зберігає ваш веббраузер

Кеш браузера – це те, з чим стикається більшість людей. Завантажуєте сайт, і ваш веб-браузер непомітно записує його фрагменти на ваш пристрій: HTML, таблиці стилів, скрипти, зображення, шрифти. Поверніться пізніше, і він зчитує ці файли безпосередньо з вашого диска, замість того, щоб завантажувати їх знову, тому друге відвідування веб-сторінки відкривається швидше, ніж перше. Логотип сайту? Завантажується один раз, використовується повторно на кожній сторінці, яка його показує.

Ось що мене засмучує: більша частина цієї швидкості залишається невикористаною. Станом на 2021 рік близько 90,4% відповідей веб-сайтів на комп'ютерах можна було кешувати , проте 52% сайтів все ще опинилися нижче 25-го процентиля за результатами стандартного аудиту кешування браузера. Перемога просто лежить там, безкоштовна, і більша частина веб-сторінок проходить повз неї. Налаштуйте кешування правильно, і результати будуть миттєвими. Повторні відвідування стають швидшими, використання мобільних даних зменшується, а вихідний сервер перестає обробляти ті самі надлишкові запити.

що таке кеш

Переваги кешування: чому воно пришвидшує роботу

Кешування — це угода. Ви витрачаєте трохи пам'яті та приймаєте невеликий ризик надання чогось дещо застарілого, а натомість отримуєте швидкість, менше навантаження та нижчу вартість. Ці три переваги є причиною того, що кешування відображається на кожному рівні, а не лише на одному.

Швидкість — очевидна перемога: подача копії з сусіднього сховища перевершує переобчислення результату або його перенесення мережею. Друга перевага — зменшення навантаження на джерело. Кожен запит, на який відповідає кеш, — це запит, який база даних або вихідний сервер ніколи не має обробляти, що підтримує безперебійну роботу систем під час піків трафіку. Третя перевага — це просто гроші: подача кешованих байтів з крайнього вузла дешевша, ніж їх генерація та відправка з центрального сервера, а коли вам потрібно неодноразово отримувати доступ до даних, ця економія значно зростає.

Вплив на продуктивність додатків, який отримує користувач, є реальним та вимірюваним. Дослідження Google 2018 року щодо мобільних сайтів показало, що скорочення часу завантаження на одну секунду збільшує конверсії на цілих 27 відсотків, тоді як широко цитоване дослідження Aberdeen Group 2012 року показало, що ціна затримки в одну секунду становить 7-відсоткове зниження конверсій. Швидші сторінки утримують людей. Кешування — один із найдешевших способів досягти цього.

Тип кешу Де воно живе Що воно зберігає Хто цим керує Типовий термін служби
Кеш процесора (L1/L2/L3) На процесорі Гарячі інструкції та дані Апаратне забезпечення, автоматично Мікросекунди
Кеш браузера Ваш пристрій HTML, CSS, JS, зображення, шрифти Ваш веббраузер Від годин до року
Кеш програм Пам'ять сервера додатків Результати запитів, сеанси Розробники (Redis, Memcached) Від секунд до годин
Кеш сервера / CDN Прикордонні сервери по всьому світу Сторінки, медіа, відповіді API Власник сайту та CDN TTL для керування кешем
DNS-кеш ОС, маршрутизатор, резольвер Пошук домену за IP-адресою DNS-резолвер Від 5 хвилин до 24 годин

Чи потрібно очищати кешовані дані, і коли?

Люди ставляться до очищення кешу як до обов’язкової роботи в контрольному списку обслуговування. Пропустіть цей контрольний список. Це насправді інструмент для усунення несправностей, нічого більше. У більшості випадків залишайте кешовані дані там, де вони є, оскільки це непомітно пришвидшує завантаження кожного сайту, який ви відвідуєте повторно.

Тож коли варто турбуватися про його очищення? Чесно кажучи, лише три ситуації. Сайт ламається або продовжує показувати застарілу кешовану версію після оновлення, і ця стара копія в кеші браузера майже завжди є винуватцем; очищення кешу примусово призводить до чистого завантаження. Ви користувалися спільним або публічним комп’ютером і хочете видалити локальний слід того, що ви переглядали. Або ваш телефон залишився до останнього гігабайта, і вам потрібно повернути це місце, оскільки кеш браузера може непомітно розростися до кількох гігабайт самостійно. Окрім цього, очищення нічого вам не дасть. Це уповільнює ваше наступне відвідування кожного сайту, поки браузер відновлює його копії, а деякі браузери виводять вас із системи в процесі. Що люди найчастіше помиляються: очищення кешу не видаляє ваші файли cookie або збережені паролі. Вони зберігаються в окремому сховищі та переживають очищення кешу, якщо ви не докладете зусиль, щоб також поставити галочки в їхніх пунктах.

Браузер Де очистити кеш
Хром Налаштування, Конфіденційність та безпека, Видалення даних перегляду, Кешовані зображення та файли
Фаєрфокс Налаштування, Конфіденційність і безпека, Файли cookie та дані сайтів, Очистити дані
Сафарі Налаштування, Safari, Очистити історію та дані веб-сайтів
Край Налаштування, Конфіденційність, Виберіть, що очистити

Кеш проти файлів cookie проти буфера: розвіювання плутанини

Три слова, які постійно плутають, про зберігання даних. Кожне з них виконує різну функцію. Кеш зберігає копії контенту, щоб ви могли швидше отримати до нього доступ наступного разу. Файл cookie – це крихітна нотатка, яку сайт залишає, щоб запам’ятати вас: сеанс входу, налаштування мови, збережені налаштування. Він містить ідентифікаційні дані, а не контент. Буфер – це знову ж таки інша справа. Він зберігає дані під час передачі, наприклад, кілька секунд відео, які поток завантажує перед тим, як ви дивитеся. Найкоротший спосіб зберегти їх у порядку: кешовані дані зберігаються для повторного використання, файл cookie запам’ятовує, хто ви, а буфер очищується в момент його використання.

Що слід пам'ятати про кеш та кешування

Як тільки ви розглядаєте кеш як не що інше, як «зберігання копії повільної речі поруч із тим місцем, де вона потрібна», він перестає виглядати як апаратна функція і починає виглядати як звичка, що пронизує всі обчислення, від 0,7-наносекундного завантаження на процесор до копії цієї сторінки, що знаходиться на периферійному сервері поблизу вашого міста. Практичний урок — це той, якого веб не засвоїв: більша частина цієї швидкості безкоштовна, і більшість сайтів все одно її пропускають. Наступного разу, коли сторінка відкриється, перш ніж ви встигнете моргнути, ви точно знатимете, яка копія врятувала вас від подорожі.

Які-небудь питання?

Уявіть собі запас копій, що зберігаються десь швидко. Коли дані завантажуються повільно, комп’ютер зберігає копію неподалік, а потім витягує її наступного разу, замість того, щоб повторювати роботу. Ваш процесор робить це менш ніж за наносекунду. Вебсайт робить це на різних континентах. Та сама ідея, але зовсім інший масштаб.

Іноді, але не за розкладом. Очищайте його, коли сайт виглядає непрацюючим або застарілим, коли ви користуєтеся спільним комп’ютером або коли місця для зберігання мало. В інший час саме кешовані дані пришвидшують повторні відвідування. Якщо ви стираєте його без причини, ви лише уповільнюєте свою роботу.

Кеш зберігає копії файлів, тому повторні відвідування завантажуються швидше. Очистити його? Зазвичай ні. Три причини виправдовують це: глючний або застарілий сайт, конфіденційність на спільному комп’ютері або телефон, якому не вистачає місця. Немає такої причини? Залиште це як є. Кеш заробляє собі на життя.

Тільки тоді, коли щось справді ламається, що для більшості людей трапляється кілька разів на рік. Щотижневий ритуал не має сенсу. А коли один сайт постійно дає збої, очистіть дані лише цього сайту, замість того, щоб стерти весь кеш і перетягувати всі інші сайти, які ви відвідуєте.

Ні, не за замовчуванням. Кешовані файли та збережені паролі зберігаються в окремих сховищах, тому звичайне очищення кешу залишає ваші логіни недоторканими. Паролі зникають, лише якщо ви навмисно поставите галочку навпроти них у меню очищення, яке є окремим від опції «кешовані зображення та файли». Залиште цей прапорець, і ваші логіни збережуться.

Кеш зберігає копії контенту, такого як зображення, скрипти та шрифти, тому сторінки завантажуються швидше. Файли cookie відрізняються. Вони зберігають невеликі теги, які ідентифікують вас: сеанс входу, налаштування вашого сайту. Кеш — це швидкість; файли cookie пам’ятають, хто ви. Окремі сховища, тому очищення одного не впливає на інше. ---

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.