Kontaktoni mbështetjen

Përgjigjemi me email. Zakonisht brenda dy ditësh.

Për mbrojtje nga abuzimi, Google reCAPTCHA kontrollon këtë dërgesë. Gjatë kësaj, të dhënat i transmetohen kompanisë Google. Skripti ngarkohet vetëm kur hapet ky formular.

← Të gjitha postimet

Memoria e ndërmjetme në RAM për figurat e numëruesve

Për përmbajtjen dhe kontrollin e saj

Në këtë artikull

Pothuajse një e pesta e figurave të numëruesve që vizaton ky shërbim nuk ndryshon më asgjë. Një skript gjurmimi i miut nga brezi i mëparshëm ringarkon figurën në çdo lëvizje dhe, që kur këto kërkesa nuk rrisin më asgjë, dy të njëpasnjëshme prodhojnë të njëjtën figurë bajt për bajt.

Kandidat i qartë për memorie të ndërmjetme. Vendimet interesante ishin ku të vendosej dhe mbi çfarë të bazohej çelësi.

Jo në disk

Kjo punon në një server të vogël dhe disku është kartë SD. Ruajtja aty e figurave të vizatuara do të nënkuptonte rreth 70 MB shkrime në ditë, në këmbim të një kursimi të matur prej 1,6 minutash kohe CPU në ditë.

Ky është kompromis i keq. Kartat SD dëmtohen nga shkrimet dhe ajo që fitohet është gabim rrumbullakimi në një makinë që nuk kufizohet nga CPU-ja. Prandaj memoria e ndërmjetme gjendet në /dev/shm, që është tmpfs, pra RAM. E matur aty: 0,027 ms për lexim, 0,036 ms për shkrim, 1,9 GB të lira.

sa do të kushtonte, në ditë70 MBsa do të fitonte, në ditë1,6 minnjësi të ndryshme me qëllim — ky është kompromisi

Gjithçka zhduket kur riniset makina. Për memorien e ndërmjetme kjo nuk është humbje, është gjendja normale.

Redis punon në të njëjtën makinë. Nuk u përdor për një arsye që nuk lidhet me teknologjinë: i përket një aplikacioni tjetër dhe mbrohet me fjalëkalim për të. Ndarja e një instance do të lidhte dy shërbime të palidhura, që një ditë e keqe për njërin të bëhej e keqe edhe për tjetrin.

Çelësi përmban numrat

Çelësi i zakonshëm i memories së ndërmjetme është identitet plus skadim dhe skadimi është bast: asgjë e rëndësishme nuk ndryshoi në pesë minutat e fundit. Për numëruesin, ajo që ndryshon është pikërisht ajo që shfaqet.

Prandaj vlerat e shfaqura vendosen në çelës. Nëse ndryshon një numër, çelësi ndryshon dhe figura vizatohet e freskët. Basti zhduket në vend që të vendoset me kujdes. Çdo vizitë e numëruar rrit të paktën totalin e përgjithshëm, prandaj asnjë vizitë e numëruar nuk mund të marrë figurë të vjetruar. Skadimi që mbetet është vetëm kufi i sipërm për vlerat që nuk janë në çelës — shifrat javore, mujore dhe vjetore.

Çfarë duhej kontrolluar më parë

Memoria e ndërmjetme është e sigurt vetëm nëse ajo që ruan është funksion i çelësit. Ky është pohim për çdo dizajn dhe u kontrollua, nuk u supozua:

  • asnjë dizajn nuk përdor rand(), mt_rand(), shuffle() apo uniqid()
  • asnjë dizajn nuk e lexon orën më hollësisht se në nivel ore
  • parametrat e gjurmimit nga skripti i vjetër nuk lexohen askund në kod

Kjo e fundit solli dështimin më të mirë të ushtrimit. Kur ata parametra ishin ende pjesë e çelësit, çdo kërkesë mbante koordinata paksa të ndryshme miu, prandaj çdo çelës ishte unik. Memoria e ndërmjetme punoi një ditë të plotë dhe regjistroi 13 përputhje. Punonte përsosmërisht dhe nuk bënte asgjë, lloji më i vështirë i prishjes për t'u vënë re.

Dhe nëse diçka këtu dështon — dosje e palexueshme, disk plot, zë i dëmtuar — figura thjesht vizatohet normalisht. Memoria e ndërmjetme nuk duhet të jetë kurrë arsyeja pse nuk shfaqet një numërues.

Reklamë