Bosh sahifa Wiki Cache

Cache

Cache — tez-tez ishlatiladigan ma’lumotlarni vaqtincha saqlab turadigan mexanizm. Cache ma’lumotni har safar asosiy manbadan qayta olish o‘rniga, oldindan saqlangan nusxadan tezroq berishga yordam beradi.

Cache kompyuter, brauzer, server, database, CDN, API va dastur ichida ishlatilishi mumkin. Uning asosiy maqsadi — tizim tezligini oshirish va ortiqcha yuklamani kamaytirish.

Vazifasi

Cache ma’lumotga qayta-qayta murojaat qilish kerak bo‘lgan holatlarda ishlatiladi.

Cache quyidagi vazifalarni bajaradi:

  • ma’lumotni tezroq qaytarish;
  • database yuklamasini kamaytirish;
  • server javob berish vaqtini qisqartirish;
  • tarmoq trafikini kamaytirish;
  • foydalanuvchi tajribasini yaxshilash;
  • statik fayllarni tez yetkazish;
  • og‘ir hisob-kitob natijalarini vaqtincha saqlash;
  • API javoblarini qayta ishlatish.

Masalan, sayt bosh sahifasidagi mashhur maqolalar ro‘yxati cache’da saqlansa, server har bir foydalanuvchi uchun database’dan qayta so‘rov yubormaydi.

Cache qanday ishlaydi?

Cache ishlashida odatda asosiy manba va vaqtinchalik saqlash qatlami bo‘ladi. Dastur avval cache’dan ma’lumotni qidiradi. Agar ma’lumot cache’da bo‘lsa, u darhol qaytariladi. Agar bo‘lmasa, asosiy manbadan olinadi va keyingi so‘rovlar uchun cache’ga yoziladi.

Oddiy jarayon:

  • client ma’lumot so‘raydi;
  • server avval cache’ni tekshiradi;
  • ma’lumot cache’da bo‘lsa, darhol qaytariladi;
  • ma’lumot cache’da bo‘lmasa, database yoki boshqa manbadan olinadi;
  • olingan ma’lumot cache’ga yoziladi;
  • javob clientga yuboriladi.

Cache’dan topilgan ma’lumot cache hit, topilmagan holat esa cache miss deb ataladi.

Cache hit

Cache hit — kerakli ma’lumot cache’da mavjud bo‘lgan holat. Bunday vaziyatda tizim asosiy manbaga murojaat qilmasdan, saqlangan ma’lumotni tez qaytaradi.

Cache hit quyidagi foydalarni beradi:

  • javob tezlashadi;
  • database kamroq ishlaydi;
  • server resurslari tejaladi;
  • tarmoq orqali kamroq ma’lumot almashiladi;
  • foydalanuvchi sahifani tezroq ko‘radi.

Masalan, bir xil rasm CDN cache’da bo‘lsa, foydalanuvchi uni asosiy serverdan emas, CDN’dan oladi.

Cache miss

Cache miss — kerakli ma’lumot cache’da topilmagan holat. Bunday vaziyatda tizim ma’lumotni asosiy manbadan oladi va keyingi so‘rovlar uchun cache’ga saqlashi mumkin.

Cache miss quyidagi holatlarda yuz beradi:

  • ma’lumot birinchi marta so‘ralganda;
  • cache muddati tugaganda;
  • cache tozalanganda;
  • ma’lumot yangilanganda;
  • noto‘g‘ri cache kaliti ishlatilganda.

Masalan, yangi maqola birinchi marta ochilganda u hali cache’da bo‘lmasligi mumkin.

Cache turlari

Cache ishlash joyiga qarab bir nechta turga bo‘linadi.

  • Browser cache — brauzerda saqlanadigan fayllar;
  • Server cachebackend yoki web serverda saqlanadigan ma’lumotlar;
  • Database cachedatabase query natijalarini tezroq olish uchun ishlatiladi;
  • CDN cache — statik fayllarni edge serverlarda saqlaydi;
  • Application cache — dastur ichida vaqtinchalik ma’lumot saqlaydi;
  • Memory cacheRAM’da saqlanadigan tezkor cache;
  • CPU cache — protsessor ichidagi juda tezkor xotira.

Har bir cache turi tizimning turli qatlamida ishlaydi.

Browser cache

Browser cache foydalanuvchi brauzerida saqlanadigan cache turidir. Brauzer saytga tegishli ayrim fayllarni lokal qurilmada saqlaydi.

Browser cache’da quyidagilar saqlanishi mumkin:

  • rasm fayllar;
  • CSS fayllar;
  • JavaScript fayllar;
  • fontlar;
  • favicon;
  • statik sahifa qismlari.

Masalan, foydalanuvchi saytga qayta kirganda, brauzer logotip yoki CSS faylni serverdan qayta yuklamasdan lokal cache’dan olishi mumkin.

Server cache

Server cache backend yoki web server tomonida ishlaydi. U tayyorlangan javoblar, query natijalari yoki sahifa qismlarini vaqtincha saqlaydi.

Server cache quyidagi holatlarda ishlatiladi:

  • bosh sahifa ma’lumotlari;
  • ko‘p o‘qiladigan maqolalar;
  • kategoriyalar ro‘yxati;
  • public API javoblari;
  • hisoblangan statistika;
  • template fragmentlari;
  • foydalanuvchiga bog‘liq bo‘lmagan ma’lumotlar.

Server cache backend ilovaning database bilan ishlashini kamaytiradi.

Database cache

Database cache query natijalari yoki ko‘p ishlatiladigan ma’lumotlarni tezroq qaytarishga yordam beradi. Database tizimlarining o‘zida ham ichki cache mexanizmlari bo‘lishi mumkin.

Database cache quyidagilarga ta’sir qiladi:

  • query tezligi;
  • indexlardan foydalanish;
  • diskka murojaat soni;
  • o‘qish yuklamasi;
  • database server javob vaqti.

Masalan, PostgreSQL tez-tez o‘qiladigan ma’lumotlarni xotirada ushlab turishi mumkin.

CDN cache

CDN cache statik fayllarni foydalanuvchiga yaqin edge serverlarda saqlaydi. Bu sayt ochilish tezligini oshiradi va asosiy server yuklamasini kamaytiradi.

CDN cache’da quyidagilar saqlanishi mumkin:

Masalan, sayt logotipi yoki frontend build fayllari CDN cache orqali tezroq yetkazilishi mumkin.

Memory cache

Memory cache ma’lumotlarni RAM’da saqlaydi. RAM diskka qaraganda tezroq ishlagani uchun memory cache juda tez javob beradi.

Memory cache sifatida quyidagi texnologiyalar ishlatilishi mumkin:

Memory cache ko‘pincha backend, session, rate limit va API javoblarini saqlashda ishlatiladi.

Cache key

Cache key — cache’dagi ma’lumotni topish uchun ishlatiladigan nom yoki identifikator. Har bir cache qiymati ma’lum kalit ostida saqlanadi.

Cache key misollari:

  • homepage;
  • user:15;
  • post:42;
  • category:backend;
  • api:products:page:2;
  • settings:site;
  • views:article:100.

Cache key to‘g‘ri tuzilsa, kerakli ma’lumotni topish va yangilash osonlashadi.

TTL

TTL — cache’dagi ma’lumot qancha vaqt saqlanishini bildiradi. TTL inglizcha Time To Live so‘zlarining qisqartmasi.

TTL quyidagi holatlarda ishlatiladi:

  • cache muddati belgilash;
  • eski ma’lumotni avtomatik o‘chirish;
  • vaqtinchalik API javoblarini saqlash;
  • token yoki kod muddatini cheklash;
  • rate limiting oynasini belgilash.

Masalan, maqolalar ro‘yxati 5 daqiqa cache’da turishi mumkin. Muddat tugagach, ma’lumot yangidan olinadi.

Cache invalidation

Cache invalidation — eski yoki noto‘g‘ri ma’lumotni cache’dan chiqarish jarayoni. Ma’lumot yangilanganda cache ham yangilanishi yoki o‘chirilishi kerak bo‘ladi.

Cache invalidation quyidagi holatlarda kerak bo‘ladi:

  • maqola tahrirlanganda;
  • mahsulot narxi o‘zgarganda;
  • foydalanuvchi profili yangilanganda;
  • sayt sozlamasi almashtirilganda;
  • yangi komment qo‘shilganda;
  • database’dagi asosiy ma’lumot o‘zgarganda.

Agar cache invalidation to‘g‘ri ishlamasa, foydalanuvchiga eski ma’lumot ko‘rinishi mumkin.

Cache strategiyalari

Cache ishlatishda turli strategiyalar mavjud. Ular ma’lumot qachon o‘qilishi, yozilishi va yangilanishini belgilaydi.

Keng uchraydigan cache strategiyalari:

  • Cache-aside — dastur avval cache’ni tekshiradi, bo‘lmasa database’dan olib cache’ga yozadi;
  • Read-through — cache qatlami ma’lumotni o‘zi asosiy manbadan olib beradi;
  • Write-through — ma’lumot bir vaqtda cache va asosiy manbaga yoziladi;
  • Write-behind — ma’lumot avval cache’ga yoziladi, keyinroq asosiy manbaga uzatiladi;
  • Refresh-ahead — cache muddati tugashidan oldin ma’lumot yangilanadi.

Web ilovalarda cache-aside strategiyasi ko‘p ishlatiladi.

API’da cache

API javoblari cache qilinsa, server kamroq hisob-kitob qiladi va tezroq javob beradi. Ayniqsa public, kam o‘zgaradigan ma’lumotlar cache uchun qulay.

API cache’da quyidagilar saqlanishi mumkin:

  • maqolalar ro‘yxati;
  • kategoriyalar;
  • public profil ma’lumotlari;
  • mahsulotlar katalogi;
  • qidiruv natijalari;
  • statistik ko‘rsatkichlar;
  • konfiguratsiya javoblari.

Foydalanuvchiga xos maxfiy ma’lumotlar noto‘g‘ri cache qilinsa, xavfsizlik muammosi paydo bo‘lishi mumkin.

Cache va xavfsizlik

Cache’da saqlanadigan ma’lumotlar xavfsizlik nuqtai nazaridan muhim bo‘lishi mumkin. Maxfiy yoki foydalanuvchiga xos ma’lumotlar umumiy cache’da saqlansa, boshqa foydalanuvchiga ko‘rinib qolishi ehtimoli bor.

Cache bilan bog‘liq xavfsizlik holatlari:

  • tokenni noto‘g‘ri cache qilish;
  • shaxsiy profilni public cache’da saqlash;
  • admin sahifani browser cache’da qoldirish;
  • eski permission ma’lumotini ishlatish;
  • cache poisoning;
  • private API javoblarini CDN cache’da saqlash.

Cache headerlari va permission tekshiruvlari web xavfsizligida muhim rol o‘ynaydi.

Dasturlashdagi o‘rni

Cache backend, frontend, database, DevOps va performance optimizatsiya jarayonlarida keng ishlatiladi.

Dasturlashda cache quyidagi joylarda uchraydi:

Cache tizim tezligini oshirishda muhim qatlamlardan biri hisoblanadi.

Bog‘liq tushunchalar

Redis, CDN, Database, API, Server, Browser, RAM, TTL, Cache invalidation, Backend, Performance, Session