ბიბლიოთეკა
00/07 · ~34 წთ
GUIDEDECK · ნელი სისტემა მყისიერად აღიქმებოდეს

ქეშირება & CDN —
ერთი და იგივე სამუშაო
მხოლოდ ერთხელ.

34-წუთიანი სამუშაო სესია იმის ხელოვნებაზე, თუ როგორ არ გამოვთვალოთ ხელახლა: HTTP ქეშირება, CDN-ები edge-ზე, Redis და Memcached, პატერნები, რომლებიც მონაცემებს ახალს ინახავს, და მწყობრიდან გამოსვლის გზები — stampede, ქეშის მოწამვლა, მოძველებული წაკითხვები — რომლებიც ფუნდამენტების გამომტოვებელ გუნდებს კბენს.

~34 წთდამწყები → საშუალოვები და ბექენდი
გადაახვიეთ
01 · საერთოდ რატომ ქეში 4 წთ

ყველაზე სწრაფი სამუშაო ის არის,
რომელსაც ორჯერ არ აკეთებთ.

ქეში ინახავს ძვირადღირებული სამუშაოს შედეგს იქვე, სადაც ის საჭიროა, ასე რომ შემდეგი მოთხოვნა მზა პასუხს კითხულობს და არ გამოთვლის ხელახლა. კარგად გაკეთებული, ის ერთდროულად ჭრის შეყოვნებას, ხსნის დატვირთვას და ამცირებს ღირებულებას. ხაფანგი — და მიზეზი, რის გამოც ეს დეკი არსებობს — ის არის, რომ დაქეშირებული პასუხი ჩუმად ძველდება.

ქეში — ფრანგულიდან, “დამალვა” — არის სწრაფი, ჩვეულებრივ უფრო პატარა საცავი, რომელიც მონაცემების ასლს ინახავს, რათა მომავალი წაკითხვები უფრო იაფი იყოს, ვიდრე თავდაპირველ ჭეშმარიტების წყაროსთან დაბრუნება. ყოველი ქეში ცოტა სიახლეს ბევრ სისწრაფეზე ცვლის; თქვენი საქმეა, ეს გაცვლა შეგნებულად აირჩიოთ.
~100×

მეხსიერებიდან წაკითხვა დატვირთვის ქვეშ მყოფი მონაცემთა ბაზის ახალ შეკითხვასთან შედარებით — სხვაობა, რომელსაც ქეში გიბრუნებთ.

10ms

კონტინენტის გადამკვეთი მიმოსვლა, რომელსაც სინათლეც ვერ ჯობნის — შველის მხოლოდ მონაცემების დაახლოება.

90%+

დატვირთული საიტის ტრაფიკისა ერთი და იმავე პოპულარული ელემენტების წაკითხვაა.

$

ქეშში მოხვედრა გვაცილებს გამოთვლას, გამავალ ტრაფიკსა და მონაცემთა ბაზის სიმძლავრეს, რომელშიც სხვა შემთხვევაში გადაიხდიდით.

ყველა ქეში ერთნაირად მუშაობს: ჯერ სწრაფი ასლი შეამოწმე; აცდენისას ნელი სამუშაო ერთხელ შეასრულე და დაიმახსოვრე.

ერთადერთი მეტრიკა, რომელსაც მნიშვნელობა აქვს

მოხვედრის კოეფიციენტი არის ქეშიდან მომსახურებული მოთხოვნების წილი. 95%-იან კოეფიციენტზე 20 მოთხოვნიდან მხოლოდ 1 აღწევს თქვენს წყარომდე — ანუ წყარო 20× ნაკლებ დატვირთვას ხედავს. აწიეთ 99%-მდე და ეს უკვე 100×-ია. ზედა ზღვართან ახლოს მცირე მატებაც კი ბევრად ღირს.

  • შეყოვნება — ახლომდებარე მოხვედრა მიკროწამებში პასუხობს და არა ქსელური მიმოსვლის ფასად. იხილეთ ქსელები, თუ რატომ არის მანძილი გადასახადი.
  • დატვირთვა — ქეშები წაკითხვების ნიაღვარს იწოვს, რომ მონაცემთა ბაზები ჯანმრთელი დარჩეს. მეტი აქ: მონაცემთა ბაზები & SQL.
  • მოძველების ფასი — დაქეშირებული პასუხი სტოპკადრია. მთელი ოსტატობა იმის გადაწყვეტაა, რამდენად ძველი უკვე ძალიან ძველია.

როგორც  რძის მაცივარში შენახვა იმის ნაცვლად, რომ ყოველ ჯერზე მაღაზიაში წახვიდე — სწრაფი და იაფი, სანამ კოლოფი ჩუმად არ გაფუჭდება.

02 · HTTP ქეშირება 6 წთ

ვებს ქეში
ჩაშენებული აქვს ყოველ პასუხში.

ბრაუზერები, პროქსები და CDN-ები ერთსა და იმავე წესებს ემორჩილებიან, რომლებსაც პასუხის რამდენიმე ჰედერი აწესებს. ისწავლეთ ისინი და ქეშირებას მთელ ჯაჭვში უფასოდ მიიღებთ — დამატებითი ინფრასტრუქტურის გარეშე, უბრალოდ სწორი Cache-Control-ით.

Cache-Control — პასუხის ჰედერი, რომელიც პოლიტიკას აწესებს — წყაროსა და ბრაუზერს შორის მდგარ ყველა ქეშს ეუბნება, რამდენ ხანს შეიძლება პასუხის ხელახლა გამოყენება და ვის აქვს მისი შენახვის უფლება. დააწყვილეთ ვალიდატორთან (ETag ან Last-Modified) და ქეში იაფად რევალიდაციას გაუკეთებს პასუხს, როცა ის მოძველდება.
// a public asset — cache hard, far and wide Cache-Control: public, max-age=31536000, immutable // a personalized page — store only in the browser Cache-Control: private, max-age=0, must-revalidate // a validator lets caches re-check instead of refetch ETag: "a3f9c2" Last-Modified: Wed, 18 Jun 2026 10:00:00 GMT

პირობითი მოთხოვნა: ბრაუზერი კითხულობს “ისევ a3f9c2?”, ხოლო 304 ნიშნავს “დიახ — გამოიყენე ის, რაც გაქვს.”

დირექტივები, რომლებიც უნდა დაიმახსოვროთ

max-age=N

ახალია N წამის განმავლობაში

პასუხის ხელახლა გამოყენება სერვერის შეკითხვის გარეშე შეიძლება N წამის განმავლობაში. ამის შემდეგ ის მოძველებულია და რევალიდაცია სჭირდება.

public / private

ვის შეუძლია მისი შენახვა

public საზიარო ქეშებს (CDN-ები, პროქსები) აძლევს მისი შენახვის უფლებას; private მას მხოლოდ საბოლოო მომხმარებლის ბრაუზერით ზღუდავს — გამოიყენეთ ყველაფერზე, რაც პერსონალიზებულია.

no-store

არასოდეს დააქეშირო

არსად შეინახოთ ასლი. საიდუმლოებისა და მგრძნობიარე მონაცემებისთვის. გაითვალისწინეთ: no-cache სხვა რამეა — ის ნიშნავს “შეინახე, მაგრამ ყოველ ჯერზე გადაამოწმე.”

immutable

ის არასოდეს შეიცვლება

max-age-ის მთელი სიცოცხლის განმავლობაში რევალიდაცია საერთოდ გამოტოვეთ. უსაფრთხოა მხოლოდ კონტენტის ჰეშიანი ფაილებისთვის, როგორიცაა app.3f9c.js.

ETag თუ Last-Modified

  • ETag — კონტენტის გაუმჭვირვალე ანაბეჭდი (ხშირად ჰეში). კლიენტი მას If-None-Match-ში აბრუნებს; სერვერი ადარებს და თუ არაფერი შეცვლილა, 304-ით პასუხობს.
  • Last-Modified — დროის ნიშნული; კლიენტი აგზავნის If-Modified-Since-ს. მისი გამოთვლა იაფია, მაგრამ სიზუსტე მხოლოდ წამია, ამიტომ ხშირი ცვლილებებისას ETag იგებს.
  • ორივე შემთხვევაში მოგება ერთი და იგივეა: 304 სხეულის ხელახლა გაგზავნას გვაცილებს. იხდით ერთ მიმოსვლას, სამაგიეროდ ზოგავთ ქსელის გამტარუნარიანობასა და რენდერინგს.

ქეშის გვერდის ავლის პატერნი

ხრიკი, რომელიც immutable ფაილების უკან დგას: ჩადეთ კონტენტის ჰეში ფაილის სახელში. შეცვლით ფაილს — შეიცვლება სახელიც, ანუ URL ახალია და ძველი ქეშები უბრალოდ გვერდით რჩება — ინვალიდაცია საჭირო აღარაა.

// ბილდის შედეგი — ჰეში სახელში /assets/app.3f9c2a.js // სამუდამოდ ქეშში /assets/app.7b1e44.js // შემდეგი დეპლოი = ახალი URL // მათზე მიმთითებელი HTML რჩება max-age=0
03 · CDN და edge ქეშირება 5 წთ

მიიტანეთ ბაიტები
მომხმარებელთან უფრო ახლოს.

ჰედერების ვერცერთი ხრიკი ფიზიკას ვერ ჯობნის: 8000 კმ-ით დაშორებულ სერვერამდე მისული მოთხოვნა მანძილში იხდის. CDN ასლებს ასეულობით ქალაქში ინახავს, ასე რომ მომხმარებელთა უმეტესობა რამდენიმე მილიწამში მდებარე მანქანას ხვდება — თქვენი წყარო კი ამ ტრაფიკს თითქმის ვერ ამჩნევს.

CDN — Content Delivery Network — არის მთელ მსოფლიოში გაფანტული ქეშ-სერვერების ფლოტი (edge ნოდები ანუ PoP-ები, points of presence). მოთხოვნები უახლოესზე მარშრუტდება; მოხვედრისას ის ლოკალურად პასუხობს, აცდენისას კი ერთხელ წამოიღებს თქვენი წყაროდან (origin) და შედეგს ყველა ახლომდებარე მომხმარებლისთვის ინახავს.

CDN თქვენს კონტენტს edge-ზე ფენს; წყარო მხოლოდ იშვიათ აცდენას ამუშავებს, ამიტომ საკუთარ სიმძლავრეს ბევრად სცილდება.

რას აქეშირებს CDN — და როგორ

  • სტატიკური ფაილები — სურათები, JS, CSS, ფონტები, ვიდეო. კლასიკური შემთხვევა: ჩადეთ ჰეში სახელში, დააქეშირეთ immutable-ით და დაივიწყეთ.
  • მთლიანი HTML გვერდები — როცა გვერდი ყველასთვის ერთნაირია, მისი დაქეშირება edge-ზეც შეიძლება. სწორედ ეს არის edge რევალიდაციის ამბავი თანამედროვე SSG/ISR-ის უკან.
  • ქეშის გასაღებები — ნაგულისხმევად URL. დაამატეთ Vary, რომ ჰედერით გაიყოს (მაგ. Vary: Accept-Encoding) და gzip-ისა და brotli-ის ასლები არ აირიოს.
  • Edge გამოთვლა — Cloudflare Workers, Fastly Compute და CloudFront Functions ლოგიკას თავად edge-ზე უშვებს, ასე რომ პერსონალიზაციისთვის შინ დაბრუნება საჭირო აღარაა.

სად დგას ის უფრო დიდ სისტემაში

CDN ქეშირების ყველაზე გარე შრეა — პირველი გაჩერება მომხმარებლისთვის და უკანასკნელი თავდაცვის ხაზი თქვენი წყაროსთვის. ის დგას აპლიკაციის ქეშსა და მონაცემთა ბაზაზე მაღლა; ყოველი შრე იჭერს იმას, რაც მის გარეთ მდგარმა გამოტოვა. სრული მოთხოვნის გზა ამ დონეებში იხილეთ სისტემების დიზაინში.

04 · აპლიკაციის ქეშები 5 წთ

საზიარო საცავი მეხსიერებაში,
რომელსაც თქვენი კოდი მართავს.

HTTP ქეშირება ავტომატურია, მაგრამ უხეში. როცა გჭირდებათ კონკრეტული შეკითხვის შედეგის, სესიის ან გამოთვლილი ფიდის დაქეშირება — ყველაფრის, რასაც თქვენი ბექენდი გასაღებით ინახავს და კითხულობს — მიმართავთ მეხსიერებაში მომუშავე საცავს, როგორიცაა Redis ან Memcached, რომელსაც ყველა აპ სერვერი იზიარებს.

ქეში მეხსიერებაში — გასაღები-მნიშვნელობის საცავი, რომელიც RAM-ში ცხოვრობს — თქვენი მონაცემთა ბაზის გვერდით დგას და ცხელ მონაცემებს ინახავს, რომ აპ სერვერებმა ისინი მიკროწამებში წაიკითხონ და ბაზას ხელახლა არ შეეკითხონ. რადგან ეს ცალკე, საზიარო სერვისია, თქვენი ყველა სერვერი ერთსა და იმავე ქეშს ხედავს — განსხვავებით ლოკალური, პროცესშიდა ქეშისგან, რომელსაც თითოეული სერვერი თავისთვის ინახავს.
async function getUser(id: string) {
  const hit = await cache.get(`user:${id}`)
  if (hit) return JSON.parse(hit)   // fast path

  const user = await db.query(...)        // miss → origin
  await cache.set(`user:${id}`, JSON.stringify(user),
                  "EX", 300)         // TTL: 5 min
  return user
}

აპლიკაცია ჯერ Redis-ს ამოწმებს; აცდენა მონაცემთა ბაზას ერთხელ ხვდება, შემდეგ კი შედეგი TTL-ით ბრუნდება ქეშში.

ინსტრუმენტების ლანდშაფტი — ქეშები მეხსიერებაში

ორი სახელი დომინირებს. ისინი ძლიერ ფარავენ ერთმანეთს; სწორი არჩევანი მონაცემების ფორმასა და მდგრადობაზეა დამოკიდებული და არა სუფთა სისწრაფეზე.

Redis

შვეიცარიული დანა საცავებს შორის

  • დადებითი — მდიდარი ტიპები (სიები, სიმრავლეები, დალაგებული სიმრავლეები, ნაკადები), სურვილისამებრ პერსისტენტულობა, pub/sub, Lua და კლასტერიზაცია; ერთი ინსტრუმენტი ქეშისთვის, რიგისთვის, ლიდერბორდისა და სიხშირის ლიმიტისთვის.
  • უარყოფითი — თითო ნოდზე ძირითადად ერთძაფიანია და ფუნქციებით გადატვირთული, ამიტომ შეიძლება ზედმეტი იყოს, თუ მხოლოდ GET/SET-ს აკეთებთ.
  • აირჩიეთ, როცა  გინდათ ერთი საცავი ბევრი საქმისთვის, ან გჭირდებათ სტრუქტურები უბრალო სტრიქონებს მიღმა.
Memcached

მჭლე სპეციალისტი

  • დადებითი — უკიდურესად მარტივი, მრავალძაფიანი გასაღები→ბლობი ქეში; უპრობლემოდ იშლება ბირთვებზე და თითო ჩანაწერზე ცოტა მეხსიერებას ხარჯავს. სასტიკად სწრაფია იმ ერთ საქმეში, რასაც აკეთებს.
  • უარყოფითი — მხოლოდ სტრიქონები, არც პერსისტენტულობა, არც რეპლიკაცია; გადატვირთვა ყველაფერს შლის და რთული ტიპებიც არ არსებობს.
  • აირჩიეთ, როცა  თქვენი საჭიროებაა მხოლოდ “გაუმჭვირვალე ბლობების ქეშირება გასაღებით, ძალიან სწრაფად, მეტი არაფერი.”

როგორ ავირჩიოთ

  • ნაგულისხმევად აირჩიეთ Redis — მისი მრავალმხრივობა ჩვეულებრივ თავს იმართლებს, მართული ვარიანტები კი (AWS ElastiCache, Upstash, Redis Cloud) საოპერაციო ტვირთს ხსნის.
  • მიმართეთ Memcached-ს, როცა დატვირთვა სუფთა, უზარმაზარი და მარტივი ბლობ-ქეშია და გინდათ, რაც შეიძლება მარტივი რამ აწარმოოთ.
  • როცა უფრო მარტივი იგებს: ერთი სერვერისთვის TTL-იანი პროცესშიდა რუკა ნებისმიერ ქსელურ ქეშს სჯობს — არც სერიალიზაცია, არც დამატებითი გაჩერება. Redis მაშინ დაამატეთ, როცა ის საზიარო გჭირდებათ.
05 · ქეშირების პატერნები 5 წთ

საით მიედინება წაკითხვა და ჩაწერა —
ეს წყვეტს, რა შეიძლება გაფუჭდეს.

“პატერნი” აქ უბრალოდ წესია იმისა, თუ ვინ წერს ქეშში და როდის. აირჩიეთ შეგნებულად — თითოეული განსხვავებულად ცვლის სიახლეს, სირთულესა და ჩაწერის შეყოვნებას.

Cache-aside — ქეშს აპლიკაცია მართავს

// წაკითხვა: შეამოწმე ქეში, დაბრუნდი ბაზაზე, შეავსე v = cache.get(k) ?? db.read(k) cache.set(k, v, ttl) // ჩაწერა: განაახლე ბაზა, მერე წაშალე მოძველებული გასაღები db.write(k, v) cache.del(k) // შემდეგი წაკითხვა თავიდან შეავსებს

აპლიკაცია თავად კითხულობს და წერს მონაცემთა ბაზაში და თავადვე ანახლებს ქეშს — ქეშმა ბაზის შესახებ არაფერი იცის.

როდის გამოვიყენოთ
ნაგულისხმევი არჩევანი აპლიკაციების უმეტესობისთვის. მარტივი და მდგრადი — ქეშის ჩავარდნა მხოლოდ ნელ წაკითხვებს ნიშნავს.
რას მიაქციოთ ყურადღება
ჩაწერის შემდეგ არსებობს მოკლე ფანჯარა, როცა ქეშს მოძველებული მონაცემი უჭირავს; ჩაწერისთანავე წაშლა მას მოკლედ ტოვებს.

Write-through — ქეში თქვენს ნაცვლად წერს ბაზაში

// ჩაწერისას ქეში ბაზის წინ დგას cache.write(k, v) // ქეში თავად ნახლდება… → db.write(k, v) // …და ბაზაც, სინქრონულად // წაკითხვები მუდამ თბილია — ქეში ავტორიტეტულია v = cache.read(k)

ყოველი ჩაწერა ქეშის გავლით ერთდროულად მიდის ბაზაშიც, ამიტომ წაკითხვისას ქეში არასოდეს არის მოძველებული.

როდის გამოვიყენოთ
წაკითხვები მუდამ თბილი და ბაზასთან თანმიმდევრული უნდა იყოს და ოდნავ ნელი ჩაწერების გადახდა შეგიძლიათ.
ფასი
ყოველი ჩაწერა ორივე გაჩერებაში იხდის; ინახავთ მონაცემებსაც, რომლებიც შესაძლოა აღარასოდეს წაიკითხოთ.

Write-back — ჩაწერე სწრაფად ახლა, შეინახე მოგვიანებით

// ჩაწერა მხოლოდ ქეშში; ბაზაში ჩაშვება ასინქრონულად cache.write(k, v) // მაშინვე ბრუნდება queue.push(k) // პარტიული ჩაშვება მოგვიანებით // ვორკერი რიგს ყოველ N ms-ში ცლის db.bulkWrite(queue.drain()) // ნაკლები, სამაგიეროდ დიდი ჩაწერები

ჩაწერები მხოლოდ ქეშს ხვდება და მაშინვე ბრუნდება; ვორკერი პარტიებს ბაზაში ჩააშვებს — სწრაფია, მაგრამ მონაცემი რისკის ქვეშაა, სანამ ადგილზე არ მივა.

როდის გამოვიყენოთ
ჩაწერებით დატვირთული სცენარები, რომლებიც მოკლე დანაკარგს იტანს (მეტრიკები, მთვლელები, ნახვები) და პარტიებად მუშაობით იგებს.
საფრთხე
ქეშის ავარია ჩაშვებამდე მონაცემს კარგავს. არასოდეს გამოიყენოთ იმაზე, რისი დაკარგვაც არ შეგიძლიათ.

Read-through, ერთ წინადადებაში

cache-aside-ის ახლო ნათესავი: აცდენისას ქეშს აპლიკაცია კი არ ავსებს, არამედ ამას თქვენს ნაცვლად ქეშის ბიბლიოთეკა აკეთებს ერთი get(key) გამოძახების უკან. იგივე ნაკადი, ნაკლები შაბლონური კოდი — ჩამტვირთავი ერთხელ რეგისტრირდება ქეშთან.

06 · ინვალიდაცია, TTL და SWR 5 წთ

“მხოლოდ ორი რთული რამ არსებობს”
— და ეს ერთ-ერთია.

ფილ კარლტონის ფრაზა — ქეშის ინვალიდაცია და სახელების დარქმევა — ხუმრობაა ბასრი აზრით: იმის გადაწყვეტა, როდის წყვეტს დაქეშირებული ასლი ვარგისობას, ნამდვილად რთულია. აი, პრაქტიკული ინსტრუმენტები, რომლებიც მას ალაგმავს.

ინვალიდაცია — დაქეშირებული ჩანაწერის წაშლა ან განახლება, როგორც კი წყარო შეიცვლება — ქეშს პატიოსნად ინარჩუნებს. სამი ბერკეტი არსებობს: TTL (ვადა ტაიმერით), ცხადი გამოძევება (წაშლა ჩაწერისას) და stale-while-revalidate (გასცემს ძველს, ფონზე ანახლებს).
TTL

ვადა ტაიმერით

მიეცით ყოველ ჩანაწერს Time To Live; ის N წამში ავტომატურად ამოიწურება. უკიდურესად მარტივი და თვითგანკურნებადი — მოძველების ზღვარს თავად TTL აწესებს. მთელი კითხვა მხოლოდ ისაა: „რამდენად ძველი მონაცემი მისაღები?“

ხელით

გამოძევება ჩაწერისას

წყაროს ყოველი ცვლილებისას აქტიურად del-ით წაშალეთ ან განაახლეთ გასაღები (და მისგან წარმოებული ყველა გასაღები). ზუსტი და ახალი — მაგრამ უნდა იპოვოთ ყველა ადგილი, სადაც მონაცემი დაქეშირდა, თორემ ის იქ დარჩება.

SWR

გასცემს ძველს, ანახლებს ფონზე

stale-while-revalidate: მოძველების შემდეგ ძველი ასლი მყისვე გაიცემა და ფონური განახლება ირთვება. მომხმარებელი რევალიდაციას არასოდეს ელოდება; ახალ მნიშვნელობას შემდეგი მოთხოვნა იღებს.

// fresh for 60s, then serve stale up to 1 day // while a background fetch refreshes it Cache-Control: max-age=60, stale-while-revalidate=86400 // the user never blocks on revalidation: // t < 60s → fresh, return as-is // 60s..1day → return stale + refresh behind the scenes // > 1day → block and fetch fresh
ახალი
ძველი · რევალიდაცია
ვადაგასული
მაშინვე გაცემა
მაშინვე + განახლება
ლოდინი + წამოღება
60s
1 დღე

SWR ვადის ამოწურვის მკვეთრ კლდეს რბილ ფერდობად აქცევს: ძველი პასუხები სწრაფი რჩება, სანამ ახალი იტვირთება.

ზუსტად ეს არის ძრავა Next.js-ის ISR-ისა და თანამედროვე edge-რევალიდაციის უკან — იხილეთ რენდერინგის სტრატეგიები, თუ როგორ ამუშავებს stale-while-revalidate ეტაპობრივად რეგენერირებულ გვერდებს. იგივე იდეა, HTTP ჰედერიდან მთელ სარენდერო მოდელამდე.

07 · ხაფანგები, შეჯამება 4 წთ

მწყობრიდან გამოსვლის გზები,
რომლებიც ღამის 3 საათზე გკბენთ.

ქეშები ძირითადად რამდენიმე კარგად ცნობილი გზით ფუჭდება. ამოიცანით სურათი და გამოსწორება ჩვეულებრივ ერთი კარგად დადებული ბოქლომია ან ცოტაოდენი შემთხვევითობა.

Stampede — გაფრენილი ჯოგი

ცხელ გასაღებს ვადა უსწრდება და ათასობით მოთხოვნა ერთდროულად აცდება, ყველა ერთსა და იმავე მნიშვნელობას უბრუნდება წყაროზე გამოსათვლელად.

  • გამოსწორება — ბოქლომი (ან single-flight), რომ მხოლოდ ერთმა მოთხოვნამ ააგოს მნიშვნელობა, დანარჩენები კი დაელოდონ ან ძველი მიიღონ; პლუს SWR, რომ აცდენა საერთოდ არ მოხდეს.

ქეშის მოწამვლა

ცუდი ან შემტევის მიერ შედგენილი პასუხი ქეშში ხვდება და ყველას გაეცემა — მაგალითად, გასაღებში გაუთვალისწინებელი ჰედერი საზიარო ქეშში მავნე ვარიანტს ატარებს.

  • გამოსწორება — დააქეშირეთ მხოლოდ ის, რასაც ენდობით, გასაღებში ჩადეთ ყველა შემავალი, რომელიც პასუხის სხეულს ცვლის, და შემთხვევით არასოდეს დააქეშიროთ შეცდომის პასუხები.

შეღწევა & ზვავი

შეღწევა: არარსებული გასაღებების მოთხოვნები ქეშს გვერდს უვლის და ბაზას ურტყამს. ზვავი: ბევრ გასაღებს ვადა ერთსა და იმავე წამში ეწურება.

  • გამოსწორება — დააქეშირეთ “ვერ მოიძებნა”-ც და დაუმატეთ TTL-ებს შემთხვევითი ჯიტერი, რომ ვადები დროში გაიფანტოს.
no lock origin with lock 1× herd hits origin one rebuild

single-flight ბოქლომი გაფრენილ ჯოგს ერთ ჯერზე დაყვანილ გამოთვლამდე ჩამოკეცავს; დანარჩენები წამით დაელოდებიან ან ძველ მნიშვნელობას მიიღებენ.

ხუთი წესი, რომელიც თან უნდა წაიღოთ

1დააქეშირეთ ცხელი, წაკითხვებით დატვირთული და ნელა გამოსათვლელი — და არა ყველაფერი. გაზომეთ მოხვედრის კოეფიციენტი.
2ჯერ HTTP ქეშირება გამოიყენეთ. ჰედერები ბრაუზერის, პროქსისა და CDN-ის ქეშირებას უფასოდ გაძლევთ.
3მოძველებას ზღვარი შეგნებულად დაუწესეთ. TTL ფუნქციონალია; აირჩიეთ ბიზნესიდან და არა გამოცნობით.
4დაგეგმეთ აცდენა. ბოქლომები, ჯიტერი და SWR ცივ ქეშს არ აძლევს საშუალებას, წყარო ჩააგდოს.
5მარტივი იგებს. პროცესშიდა რუკა Redis-ს სჯობს, სანამ საზიარო არ დაგჭირდებათ; სისწორე კი მაღალ კოეფიციენტს სჯობს.
ცოდნის შემოწმება

დაგამახსოვრდათ?

ხუთი სწრაფი კითხვა მოხვედრის კოეფიციენტზე, HTTP ჰედერებზე, CDN-ებზე, ქეშირების პატერნებსა და მწყობრიდან გამოსვლის გზებზე — მყისიერი პასუხი, ავტორიზაციის გარეშე.

შეაფასეთ ეს დასტა
იყავით პირველი

ნავიგაცია ← → ღილაკებით ან სქროლით · უკან ბიბლიოთეკაში