Redis Caching VS Cloudflare правила за страници — NodeJS

Кеширане на NodeJS + Redis срещу кеширане на правила за страници в Cloudflare

TLDR; за кеширане

Кеширането е основно начин, при който премахвате тежкото натоварване от вашата основна база данни или файлов сървър в случай на статични медии, като изображения и видео и т.н., и го прехвърляте към друга за предпочитане по-евтина и по-бърза платформа/система, като Cloudflare , Redis или Memcached.

Защо да кеширам

Да предположим, че имаме блог, който е посещаван милион пъти всяка минута, така че това би означавало ~16 667 операции за четене всяка секунда, сега това е много нереалистична ситуация, но просто за да поставим нещата в мащаб, всеки безплатен или малък размер самостоятелно хостван или управляваната база данни би се затруднила, ако не се срине в подобна ситуация, но ние не искаме тя да се срине, без да изгори дупка в джоба ни. тук се намесва кеширането.

Тази статия ще обхване внедряването на Redis конкретно в NodeJS, можете да следвате за Cloudflare.

В моята кариера, работеща с NodeJS, се натъкнах на два основни начина за кеширане на данни, както евтини, така и прости.

Функции Redis и Cloudflare.

1. Redis

Redis има множество случаи на употреба, като база данни в паметта за кеширане, постоянна база данни с общо предназначение (противно на мнозина, които смятат, че Redis има устойчивост на данни). За целите на тази статия ще се концентрираме върху частта от базата данни в паметта.

В. Защо базата данни в паметта на Redis е по-бърза от други основни бази данни като Postgres и MongoDB?
Отг. Базата данни в паметта (IMDB) разчита на основната памет на компютъра (известна също като RAM) за съхранение на данни, докато други използват Disk Storage, което е доста по-бавно от RAM.

В. Кога трябва да използвате Redis?
Отг. Човек би искал да използва Redis, когато иска да кешира от страна на сървъра и иска пълен контрол върху кеша, т.е. извършва CRUD операции в кеша.

Няколко числа:

Ето заявка на пощальон към моя API на Node+Express, който чете данни от firebase firestore.

Без Redis

С Redis

Можем да наблюдаваме драстично намаляване на времето за реакция, между Redis и не Redis, ето как се прилага.

Презаверка

Добрата система за кеширане винаги ще отчита валидността на данните, които съхранява, т.е. трябва ли да се актуализира/потвърждава повторно. Има две ключови неща, за които човек трябва да се погрижи, остарели данни и невалидни данни. Остарелите данни сами по себе си просто предполагат, че данните, които имаме в нашия кеш, са просто стари данни и би било разумно да ги изтриете и да ги кеширате отново, в случай че има някои промени. Невалидните данни означават, че данните, които имаме в кеша, вече не са равни на данните, съхранявани в нашата основна/постоянна база данни, и трябва да бъдат актуализирани, просто казано, ние не сме наясно със състоянието на данните, когато са остарели, но в случай на невалидност сме наясно, че данните са променени по един или друг начин.

ето как човек може да изтрие данни от Redis.

След като изтриете кешираните данни, в идеалния случай бихте изчакали някой да поиска данните отново, ако някой го направи, тъй като това ще ви спести паметта, която е необходима за съхраняване на данните, а също така ще предостави по някакъв начин най-новите възможни данни по време на заявка и кеширане.

2. Правила на страницата Cloudflare

Cloudflare е популярна компания за уеб инфраструктура и сигурност на уебсайтове, която предоставя мрежа за доставка на съдържание и услуги за смекчаване на DDoS.

Ще се фокусираме върху частта за доставяне на съдържание.

В. Защо Cloudflare е по-добър вариант от Redis?
Отг. Когато използвате Cloudflare, стресът от писането на код, управлението на ресурсите и зависимостите се отнема от вас и обикновено е много по-бързо от кеширането на Redis, защото това е разпределена мрежа от сървъри, които кешират и доставят данните, елиминирайки забавянето на мрежата.

В. Кога трябва да използвате Cloudflare?
Отг. Човек би искал да използва Cloudflare, когато иска да кешира статични медии, като изображения и видеоклипове, или данни, които не се променят за наистина дълъг период от време.

Няколко числа

Без кеширане на Cloudflare

С кеширане на Cloudflare

Виждаме, че има ~150ms разлика и тя ще остане доста постоянна във вашата потребителска база, тъй като с кеширането на Cloudflare мрежовото забавяне (съответно на разстоянието между клиент и сървър) е почти никакво.

Ето как да го направите.

Тук ще приема, че вече използвате Cloudflare за вашето уеб приложение

  1. Влезте във вашия акаунт в Cloudflare и изберете домейна, в който искате да имате кеширане.

2. Отидете в раздела Rules

3. Натиснете бутона Create Page Rule.

4. Попълнете формата

TTL означава Time To Live

Можете да зададете Edge Cache TTL и Browser Cache TTL според вашите предпочитания

Моята препоръка е да поддържате TTL кеша на браузъра минимален, защото не можете да контролирате кеша от страна на клиента.

5. Запазете и разположете

И ето как можете да кеширате маршрутите си с правилата на страницата Cloudflare, те също работят страхотно със статично съдържание, като изображения и видеоклипове.

Презаверка

Сега, ако искате да потвърдите повторно, изтрийте кешираните данни, това също е доста просто.

  1. Влезте във вашия акаунт в Cloudflare и изберете домейна, към който искате да изчистите кеша.

2. Отидете в страничната лента, след това задръжте курсора на мишката върху бутона Кеш и изберете Конфигурация от падащото меню.

3. Щракнете върху бутона Custom Purge

4. Тъй като кеширахме https://repo.plutorepo.com/sileo-depiction/*където '*' в общи линии означава всичко, ще попълним същата връзка с '*' за изтриване на целия кеш или с параметър на заявка за изтриване на конкретен кеширан отговор.

5. Натиснете бутона Purge.

След като изтриете кешираните данни, те автоматично ще се кешират отново, когато някой поиска отново тези данни.

Заключение

Кое трябва да използвате?

Е, трудно е да се даде универсален отговор, но ето нещата, които трябва да имате предвид, когато решите да използвате едно от двете.

В. Ще съхранявате ли статични медии като изображения, видеоклипове?
Отг. Ако отговорът ви е „да“, тогава правилата на страницата Cloudflare съвпадат перфектно.

В. Само JSON данни ли ще съхранявате или други данни, които могат да се съхраняват в управляем низов формат?
Отг. Ако отговорът ви е „да“, тогава Redis или Cloudflare ще ви свършат работата.

Q. Искате ли пълен контрол върху това как се създава, чете, актуализира, изтрива кешът (CRUD)?
Отг. Ако отговорът ви е „да“, бихте искали да използвате само Redis.

В идеалния случай всеки API в мащаб вероятно ще използва и двете в тандем, където бихте актуализирали кеш данните си в Redis и в крайна сметка Cloudflare ще ги потвърди повторно от вашия кеш, елиминирайки хиляди извиквания на сървъра до няколкостотин и почти всяко уеб приложение трябва да доставяйте някакъв вид статични медийни файлове, било то икони, изображения и видеоклипове и т.н., така че правилата на страницата Cloudflare ще са необходими, за да се погрижат за тях.

Благодаря ви, че прочетохте.

Ако искате да видите повече статии от мен, помислете дали да не ме следвате.

====================================

Ето моят Twitter в случай, че искате да се свържете с мен.