Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!21.11.2022
Просте та дешеве кешування для скриптів зі збереганням на AWS S3
💭🗃️🧠 В генераторі стрічок я використовую цікавий підхід до кешу. А саме, як кеш я використовую звичайний файл на S3.
Кеш потрібен здебільшого для того, щоб не завантажувати одну й ту саму сторінку два рази. Бо коли для кожного поста в стрічці треба робити окремий запит, повторювати ці запити дуже не хочеться.
Колись цей генератор був звичайним вебдодатком на Sinatra. Тоді для кешу в мене був Memcached. (Так, це було дуже давно.) Але потім мені набридло витрачати гроші на хостинг додатка на Ruby, і я переробив генератор на AWS Lambda, яка запускається раз на добу, а результат зберігає на статичний хостинг S3. Таке рішення виходить повністю безплатним.
Залишилось тільки питання — що робити з Memcached? Очевидна відповідь — сервер AWS ElastiCache - коштує гроші. Та до того ж нераціонально тримати цілий сервер для декількох хвилин на добу. Тоді я і придумав рішення з S3.
Найпростіша база даних — то завжди є простий файл. В цьому випадку, файл у форматі JSON, що містить ключі кешу та значення. Окрім самих значень, я також зберігаю термін придатності — так кеш не буде зростати нескінченно.
Перед запуском скрипту я завантажую кеш та видаляю значення, для яких вибіг термін, а по закінченню — зберігаю назад на S3. Тут можна подивитись код.
Можу уявити й складніші рішення на такому самому підході — наприклад, можна було зберігати повноцінну базу SQLite.