Када тражите податке из било ког извора, увек постоји кашњење. Пинг до веб сервера се мери у милисекундама, време приступа складишту може имати кашњење у микросекундама, док се кашњење РАМ-а мери у циклусима процесорског такта. Наравно, ове врсте брзина би биле незамисливе пре само неколико деценија, али у садашњости никада нису довољно брзе. Брзина приступа је редовно неки облик уског грла у перформансама. Један од начина на који се ово може решити је кеширање.
Кеширање је процес складиштења привремене копије ресурса на начин да му се може приступити брже него што би то могло бити нормално. Постоји велики број имплементација како у софтверу тако и у хардверу. Кеш меморије могу да се понашају као кеш меморије за читање, кеширање или обоје.
Прочитајте кеш меморије
У кеш меморији за читање подаци који су претходно захтевани се чувају у кешу ради бржег приступа. У неким сценаријима, кеш се може чак и унапред учитати подацима који омогућавају да се први захтев сервира из кеша, а не само наредни захтеви.
Кеш за читање који вам је највероватније познат је кеш претраживача. Овде претраживач чува локалну копију тражених ресурса. То значи да ако и када се веб страница поново учита или учита слична страница која користи већи део истог садржаја, тај садржај може да се сервира из кеша уместо са веб сервера. То не само да значи да се веб страница може брже учитавати, већ и смањује оптерећење на вебу сервер и смањује количину података које корисник треба да преузме, што може бити важно на мерним везе.
Сам РАМ такође делује као кеш меморија за читање података на чврстом диску. У овом случају, подаци за покренути програм се превентивно учитавају у РАМ како би ЦПУ могао брже да им приступи. Подаци из РАМ меморије се затим даље кеширају у кеш процесора, иако је процес за ово много сложенији јер се кеш процесора мери у мегабајтима, а не у гигабајтима.
Напишите кеш меморије
Кеш за писање је кеш који може да апсорбује податке који се уписују на спорији уређај. Уобичајени пример овога би био СЛЦ кеш у модерним ССД-овима. Ова кеш меморија не дозвољава брже читање података, међутим, много је брже писати него у ТЛЦ или КЛЦ флеш који чини остатак ССД-а. СЛЦ кеш може да апсорбује операције писања велике брзине, а затим те податке чим је могуће пребацује у ТЛЦ флеш који нуди много бољу густину складиштења, али је и много спорији за писање. Коришћење флеш меморије на овај начин оптимизује је и за велике брзине писања и за велику густину складиштења.
Хибридни кешови
Постоји много начина за руковање кешовима који им могу омогућити да делују и као кеш за читање и уписивање. Сваки од ових метода другачије управља операцијама писања и има предности и недостатке. Три опције су заобилажење, преписивање и враћање. Кеш за уписивање у потпуности прескаче кеш приликом писања, кеш за уписивање уписује у кеш, али сматра да је операција завршена само када је уписана у складиште. Кеш за враћање уписивања уписује у кеш, а затим сматра да је операција завршена, ослањајући се на кеш да га пренесе у складиште ако је потребно.
Записивање може бити корисно ако очекујете велику количину уписа јер минимизира одлив кеша. То, међутим, значи да ће операција која затим чита било који од тих написаних података суочити са најмање једним промашеним кешом први пут. Кешови за уписивање одмах кеширају операције писања, што значи да резултат може бити испоручен из кеша када се први пут затражи. Међутим, да би се сматрала завршеном, операција писања треба да запише и податке на диск, што додаје кашњење. Кеш меморија са повратним уписом има исту предност као и уписивање, омогућавајући да се писани подаци одмах сервирају из кеша. Ипак, не захтевају се операције писања за писање на диск да би се сматрале завршеним. Ово смањује кашњење у писању, али долази са ризиком од губитка података ако је кеш несталан и не заврши писање података назад у складиште пре него што се напајање изгуби.
Како уклонити податке из кеша?
Један од ограничавајућих фактора било ког кеша је капацитет. Великој кеш меморији је потребно много времена да се тражи, негирајући добар део предности коришћења кеша на првом месту. Меморијске технологије које се користе за кеширање такође имају тенденцију да буду скупље од меморије из које кеширају. Да то није случај, вероватно би тај меморијски ниво променио меморијске технологије како би побољшао перформансе. Оба ова фактора значе да су кешови обично релативно мали, посебно у поређењу са медијумом за складиштење са којег кеширају. РАМ има мањи капацитет од меморије, а кеш процесора има мањи капацитет од РАМ-а. СЛЦ кеш меморија има мањи капацитет од ТЛЦ меморије.
Све ово значи да је често потребно циклично избацити податке из кеша како би се ослободио простор за нове податке које треба кеширати. Постоји низ различитих приступа овоме. „Најмање коришћени“ преферира избацивање уноса из кеша који имају најмањи број приступа. Ово може бити корисно за предвиђање који ће уноси имати најмањи утицај на будуће промашаје кеша, али такође би рачунао да недавно додате уносе имају мали број приступа, што може довести до кеша цхурн.
„Најмање недавно коришћено“ преферира избацивање уноса из кеша који нису коришћени неко време. Ово претпоставља да се тренутно не користе, али не узима у обзир да ли су били интензивно коришћени неко време. „Најскорије коришћено“ преферира избацивање недавно коришћених уноса у кеш меморију, под претпоставком да су коришћени и да их неће требати поново користити. Најбољи приступ је генерално комбинација сва три, заснована на статистици коришћења.
Устајале информације и безбедносни ризици
Главни ризик од кеша је да информације које садрже могу постати застареле. Унос кеша се сматра застарелим када су оригинални подаци ажурирани остављајући унос у кеш застарелим. Важно је да редовно проверавате да ли се копија уживо која се приказује и даље подудара са кешираном копијом.
Конкретно на веб локацијама, такође је изузетно важно идентификовати који подаци се могу, а који не могу кеширати. На пример, сасвим је у реду да се велика непроменљива ЈаваСцрипт датотека кешује. Ово штеди корисника да га преузима сваки пут, а може чак и користити другим корисницима којима служи иста кеш меморија. Међутим, не можете да кеширате податке специфичне за сесију. Замислите шта би се догодило када бисте прегледали апликацију за размену порука док сте пријављени као ви, само да бисте открили да вам је достављена кеширана верзија порука другог корисника. Срећом, веб сервери могу одредити који се ресурси могу, а који не могу кеширати, а ови проблеми су генерално добро познати, тако да постоји неколико оваквих проблема.
Закључак
Кеш меморија је део меморије који може да ускладишти неке недавно коришћене податке у методу складиштења којој је брже приступити него што би било да се поново заврши нормалан процес приступа подацима. Кеш меморија је обично ограниченог капацитета, што значи да треба да избаци уносе када се напуни. Кешови су генерално транспарентни за корисника, што значи да је кашњење једини показатељ да је резултат сервиран преко кеша.