python
June 3, 2020

Вчимо Python: що таке кешування?

03.06.20. Час прочитання - 4 хв

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

Інструменти кешування

Memcached — поширена система кешування в оперативній пам'яті.

Redis — це сховище даних в пам'яті у вигляді словника (з парами ключів і їх значень). За допомогою таких бібліотек як django-redis-cache і django-redis легко налаштувати реалізацію кешування.

Ресурси на тему кешування

  • Caching at Reddit — прекрасний пост, в якому детально розбирається, як Reddit реалізує кешування свого веб-додатку на Python (а щомісячна кількість переглядів сторінок цієї програми обчислюється в мільярдах). У статті підіймаються теми моніторингу, налаштування та масштабування.
  • У статті Caching: Varnish or Nginx? питання кешування розглядається в розрізі вибору зворотного проксі-сервера. Розбираються такі речі, як підтримка SSL і SPDY.
  • Caching is Hard, Draw me a Picture. У цій статті Ви знайдете схеми кешування веб-запитів. Ці ілюстрації допоможуть краще зрозуміти сам принцип роботи шарів, що кешуються.
  • Хоча кешування в багатьох ситуаціях буває дуже корисним, не варто забувати, що у цього прийому є і негативні сторони. Багато розробників їх не враховують, а дарма.
  • У статті Mastering HTTP caching Ви знайдете поради вищого рівня. Там розбирається кешування динамічного й статичного контенту за допомогою CDN і інших конфігурацій.

Вивчення кешування на практиці

  • Проаналізуйте свій веб-додаток, визначте, які його частини працюють найповільніше. Швидше за все, Ви виявите складні запити до бази даних, які цілком можуть бути оброблені та збережені в пам'яті для швидкого доступу.
  • Використовуйте для кешування результатів цих складних запитів вже наявне сховище в оперативній пам'яті, в якому зберігаються дані сесії.
  • Реалізуйте схему перевірки та очищення кешу, щоб результати, які підготовлені до відправлення користувачам, були точними.