Посібники

Що таке кешування? Простий посібник для тих, хто створює застосунки

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

Кешування робить застосунки швидшими і дешевшими в експлуатації. Його головний компроміс у тому, що копія може застаріти.

Чому кешування важливе, коли ви створюєте з ШІ

З кешуванням в застосунках, створених з ШІ, ви зіткнетеся в трьох випадках:

  • «Я оновив застосунок, але все ще бачу стару версію». Це найпоширеніший випадок кешування, і зазвичай він нешкідливий: ваш браузер або CDN показує збережену копію.
  • Швидкість. Якщо сторінка повільна, бо щоразу перераховує ті самі числа для кожного відвідувача, кешування результату може зробити її миттєвою.
  • Вартість. Багато ШІ-конструкторів і хостингів беруть плату за обчислення, час роботи бази даних і зовнішні виклики API. Якщо тисяча відвідувачів викликає один і той самий дорогий запит, кешування дозволяє заплатити за нього один раз.

Знання основ допоможе просити кешування там, де воно корисне, і помічати його, коли воно є причиною дивної поведінки.

Повсякденна аналогія

Уявіть кухню зайнятої кав'ярні.

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

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

Де живуть кеші

Одне завантаження сторінки може пройти через кілька кешів — від найближчого до користувача до найдальшого:

КешДе розташованийЩо зазвичай зберігаєПриклад
Кеш браузераНа пристрої відвідувачаЗображення, таблиці стилів, скрипти, шрифтиВаш логотип завантажується миттєво на другій сторінці
Кеш CDNСервери по всьому світу, поблизу відвідувачівСтатичні файли і інколи цілі сторінкиВідвідувач у Токіо отримує файли з сусіднього сервера, а не з вашого джерела
Кеш застосункуНа сервері або поруч з ним, часто в пам'яті або RedisРезультати повільних запитів або зовнішніх викликів APIСьогоднішні курси валют, отримані раз на годину
Кеш бази данихУсередині бази данихНещодавно використані дані та плани запитівПопулярні рядки залишаються у швидкій пам'яті

CDN (мережа доставки контенту) — це, по суті, світова мережа кешів для файлів вашого сайту.

Як кеш вирішує, що зберігати

Кожен кеш має відповідати на ті самі запитання:

  • Що можна кешувати? Публічні спільні дані (зображення товару, допис у блозі) — так. Приватні дані (сторінка облікового запису користувача, його повідомлення) — ніколи у спільному кеші.
  • Як довго? Це TTL (time to live, час життя). Логотип можна кешувати на рік; рівень залишків на складі — 30 секунд.
  • Як він оновлюється? Або строк копії спливає, і її отримують знову, або застосунок свідомо видаляє її, коли дані змінюються — це називається інвалідацією.

Для вебсайтів сервер повідомляє браузерам і CDN, як кешувати кожен файл, за допомогою заголовка Cache-Control. Наприклад, Cache-Control: max-age=3600 означає «цю копію можна використовувати повторно протягом години».

Сучасні інструменти збірки беруть на себе найскладнішу частину для статичних файлів через cache busting: щоразу, коли файл змінюється, він отримує нове ім'я з відбитком, наприклад app.3f9a2c.js. Браузери можуть довго кешувати старе ім'я, бо нова версія просто має інше ім'я.

Практичний приклад: каталог товарів

У вас невеликий інтернет-магазин. Головна сторінка показує 50 товарів із цінами та залишками на складі з бази даних, а також список «популярних», для якого потрібно повільно порахувати всі замовлення.

  1. Зображення і скрипти кешуються браузером і CDN на довгий строк. Кожна нова збірка дає змінюваним файлам нові імена, тож оновлення все одно з'являються.
  2. Список популярних обчислюється раз на 10 хвилин і зберігається в кеші застосунку. Кожен відвідувач протягом цих 10 хвилин отримує збережений результат миттєво.
  3. Ціни кешуються на короткий строк, а кеш очищується щоразу, коли ви редагуєте товар, тож клієнти не бачать застарілої ціни довго.
  4. Залишки при оформленні ніколи не кешуються. Коли хтось натискає «Купити», застосунок перевіряє реальну базу даних, тож не може продати товар, що щойно закінчився.
  5. Сторінки кошика і облікового запису ніколи не зберігаються у спільних кешах, бо вони персональні.

Результат: головна сторінка швидка, база даних виконує значно менше роботи, і нічого, що важливе для грошей чи приватності, ніколи не застаріває.

Ключові терміни

ТермінЗначення
Попадання / промах кешуДані знайдено в кеші / їх довелося отримувати з джерела.
TTL (time to live)Скільки часу збережена копія вважається актуальною.
Застарілі даніКопія в кеші, яка вже неактуальна.
ІнвалідаціяСвідоме видалення копії з кешу, бо оригінал змінився.
Cache bustingЗміна імені файлу або URL, коли він змінюється, щоб кеші завантажили нову версію.
Cache-ControlЗаголовок HTTP, який повідомляє браузерам і CDN, як кешувати відповідь.
Жорстке оновленняПерезавантаження сторінки з вказівкою браузеру ігнорувати свій кеш.
RedisПопулярне сховище даних у пам'яті, часто використовуване як кеш застосунку.

Поширені хибні уявлення

  • «Кешування завжди добре». Кешування не того вимагає реальних помилок: застарілі ціни, відсутні нові дописи або — найгірший випадок — приватна сторінка одного користувача, показана іншому. Кешуйте свідомо.
  • «Якщо я бачу стару версію, моє оновлення не вдалося». Зазвичай ні. Спробуйте жорстке оновлення (Ctrl+Shift+R або Cmd+Shift+R на Mac) чи приватне вікно, перш ніж вважати, що щось зламалося.
  • «Кешування виправляє повільний застосунок». Воно приховує повільність для повторних запитів. Перший запит усе одно повільний, і якщо коренева проблема — відсутній індекс у базі даних, виправте і її.
  • «Кешувати все якомога довше». Довгі строки кешування підходять для файлів, які отримують нові імена при зміні. Для HTML-сторінок і даних безпечніші коротші строки.
  • «Очищення мого кешу виправляє проблему для всіх». Воно очищує лише ваш браузер. У відвідувачів і в кешах CDN є власні копії.

Що просити у вашого ШІ-конструктора

  • «Які частини цього застосунку повільні і які можна безпечно кешувати?»
  • «Кешуй [популярний список / результат API] на [N] хвилин і очищай його, коли змінюються основні дані».
  • «Переконайся, що жодна сторінка з персональними або обліковими даними не може кешуватися CDN чи спільним кешем».
  • «Став довгі строки кешування для статичних файлів з відбитками і короткі — для HTML».
  • «Кешуй відповіді від [зовнішнього API], щоб ми не викликали його при кожному завантаженні сторінки, і скажи, наскільки можуть застаріти ці дані».
  • «Після публікації я бачу стару версію. Це кеш мого браузера, чи щось не розгорнуто?»

Кешування в Mythex

Після публікації оновлення в застосунку Mythex у документації зазначено, що кеші CDN можуть ненадовго відставати, а жорстке оновлення публічного URL показує нову версію — див. Як опублікувати. На сторінці Ліміти хостингу також рекомендовано кешувати статичні ресурси, адже хостинг, час роботи бази даних і трафік оплачуються з вашого балансу кредитів. Усе, що виходить за межі цього, — кешування результатів запитів або відповідей API — це те, що ви просите агента вбудувати у ваш застосунок.

Пов'язане читання: що таке CDN, як зробити ваш сайт швидшим і що таке обмеження частоти запитів.

Запитання

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

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

Чому я досі бачу стару версію сайту після оновлення?

Ймовірно, ваш браузер або CDN віддає збережену копію старих файлів. Жорстке оновлення (Ctrl+Shift+R у Windows, Cmd+Shift+R на Mac) зазвичай вирішує проблему. Для відвідувачів добре зроблені сайти дають оновленим файлам нові імена, щоб кеші автоматично завантажували нову версію.

Що дає очищення кешу?

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

Чи може кешування спричинити проблеми?

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

Mythex · Pricing · Створюйте що завгодно з ШІ · Шаблони сайтів і застосунків · Порівняння Mythex · Глосарій створення застосунків за допомогою ШІ · Безкоштовні інструменти для створення застосунків за допомогою ШІ · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)