Võtke ühendust toega

Vastame e-postiga, tavaliselt kahe päeva jooksul.

Väärkasutuse vältimiseks kontrollib seda saadetist Google reCAPTCHA. Seejuures edastatakse andmeid Googlele. Skript laaditakse alles selle vormi avamisel.

← Kõik postitused

Loenduripiltide vahemällu salvestamine mällu

Sisust ja selle ülevaatamisest

Selles artiklis

Peaaegu viiendik selle teenuse joonistatavatest loenduripiltidest ei muuda enam midagi. Eelmise põlvkonna hiireliikumise skript laeb pildi uuesti iga liigutuse peale ja kuna need päringud enam midagi ei suurenda, annavad kaks järjestikust sama pildi, bait baidi haaval.

Ilmne kandidaat vahemälule. Huvitavad otsused olid, kuhu see panna ja mille järgi võtit moodustada.

Mitte kettale

See töötab väikesel serveril ja ketas on SD-kaart. Joonistatud piltide vahemällu salvestamine sinna tähendanuks ligikaudu 70 MB kirjutusi päevas, vastutasuks mõõdetud kokkuhoiu eest: 1,6 minutit protsessoriaega päevas.

See on halb vahetus. SD-kaardid lähevad katki kirjutamisest ja ostetav asi on ümardamisviga masinal, mis ei ole protsessorist piiratud. Seega elab vahemälu kataloogis /dev/shm, mis on tmpfs, mis on RAM. Mõõdetud seal: 0,027 ms lugemine, 0,036 ms kirjutamine, 1,9 GB vaba.

mis see oleks maksnud, päevas70 MBmis see oleks toonud, päevas1,6 minerinevad ühikud tahtlikult — selles ongi vahetus

Kõik kaob taaskäivitamisel. Vahemälu jaoks ei ole see kaotus, see on tavaline olukord.

Redis töötab samal masinal. Seda ei kasutatud põhjusel, millel pole tehnoloogiaga mingit pistmist: see kuulub teisele rakendusele ja on selle jaoks parooliga kaitstud. Ühe instantsi jagamine seoks kaks omavahel mitteseotud teenust, nii et ühe halb päev muutub teise halvaks päevaks.

Võti sisaldab numbreid

Tavaline vahemälu võti on identiteet pluss aegumine ja aegumine on kihlveo: viimase viie minuti jooksul ei muutunud midagi olulist. Loenduri puhul on see, mis muutub, täpselt see, mida kuvatakse.

Seega lähevad kuvatavad väärtused võtme sisse. Kui number muutub, on see teine võti ja pilt joonistatakse uuesti. Kihlvedu kaob, mitte ei tehta hoolikalt. Iga arvestatud külastus suurendab vähemalt eluaegset kogusummat, nii et ühelegi arvestatud külastusele ei saa serveerida aegunud pilti. Alles jääv aegumine on ainult ülempiir väärtustele, mida võtmes ei ole — nädala-, kuu- ja aastanumbritele.

Mida tuli kõigepealt kontrollida

Vahemälu on ohutu ainult siis, kui see, mida ta salvestab, on tema võtme funktsioon. See on väide iga kujunduse kohta ja seda kontrolliti, mitte ei eeldatud:

  • ükski kujundus ei kasuta rand(), mt_rand(), shuffle() ega uniqid()
  • ükski kujundus ei loe kella täpsemalt kui tunni kaupa
  • vana skripti jälgimisparameetreid ei loeta puus kusagil

Viimane tõi kaasa kogu harjutuse parima läbikukkumise. Kuni need parameetrid olid veel võtme osa, kandis iga päring veidi erinevaid hiirekoordinaate, nii et iga võti oli unikaalne. Vahemälu töötas terve päeva ja registreeris 13 tabamust. See töötas täiuslikult ja ei teinud midagi, mis on kõige raskemini märgatav katkisuse liik.

Ja kui siin miski ebaõnnestub — loetamatu kataloog, täis ketas, rikutud kirje — joonistatakse pilt lihtsalt tavalisel viisil. Vahemälu ei tohi kunagi olla põhjus, miks loendur ei ilmu.

Reklaam