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