Кэштеу дегеніміз не? Қосымша құрастырушыларға арналған қарапайым нұсқаулық
Кэштеу — алу баяу немесе қымбат болған нәрсенің дайын көшірмесін сақтау, сондықтан оған келесі сұраныс сол көшірмеден тез жауап алады. Сақталған көшірме кэш деп аталады. Браузеріңіз суреттерді кэштейді, сондықтан сайт екінші кіруіңізде жылдамырақ жүктеледі; сервер баяу деректер қоры сұранысының нәтижесін кэштейді, сондықтан әр келушіге оны қайта орындамайды.
Кэштеу қосымшаларды жылдамырақ әрі пайдалануға арзанырақ етеді. Оның басты кемшілігі — көшірме ескіруі мүмкін.
AI көмегімен құрастырғанда кэштеу неге маңызды
AI-мен құрастырылған қосымшаларда кэштеумен үш жолмен кездесесіз:
- «Қосымшаны жаңарттым, бірақ әлі ескі нұсқаны көремін». Бұл кэштеудің ең жиі кездесетін сәті, және әдетте зияны жоқ — браузеріңіз немесе CDN сақталған көшірмені көрсетіп тұр.
- Жылдамдық. Егер бет әр келушіге бірдей сандарды қайта есептегендіктен баяу болса, нәтижені кэштеу оны бірден жүктелгендей етеді.
- Шығын. Көптеген AI құрастырушылар мен хостингтер есептеу, деректер қоры уақыты және сыртқы API шақырулары үшін ақы алады. Мың келуші бірдей қымбат сұраныс жібергенде, кэштеу сізге оны бір рет төлеуге мүмкіндік береді.
Негізгі білім кэштеуді қажет жерде сұрауға және бір нәрсе дұрыс емес көрінгенде оның себебі кэш екенін байқауға көмектеседі.
Күнделікті салыстыру
Жұмыс істеп жатқан кафенің асүйін елестетіңіз.
Әр таңертең аспаз әр кофені тапсырыс берілгенде жаңа ұнтақталған дәндерден дайындай алады. Бұл баяу. Оның орнына ол ыстық плитада дайын сүзгілі кофенің шәйнегін ұстайды. Көпшілік клиент бір шыны кофені секундтарда алады — бұл кэш тигізуі (cache hit). Шәйнек бітсе, біреу жаңасын дайындайды — бұл кэш өткізбеуі (cache miss).
Бірақ ұзақ тұрған кофе ескіреді, сондықтан кафенің ережесі бар: 30 минуттан ескі шәйнектің бәрін төгу. Бұл ереже — кэштің жарамдылық мерзімі (expiry time). Ешкім бір шәйнекті күні бойы сақтамайды, және ешкім жеке тапсырысты, мысалы сұлы сүтімен және үш қант салынғанын, алдын ала дайындамайды — кейбір нәрселерді мүлде кэштеуге болмайды.
Кэштер қайда орналасады
Бір бетті жүктеу пайдаланушыға ең жақыннан ең алысқа дейін бірнеше кэш арқылы өтуі мүмкін:
| Кэш | Қайда орналасқан | Әдетте не сақтайды | Мысал |
|---|---|---|---|
| Браузер кэші | Келушінің құрылғысында | Суреттер, стильдер, скрипттер, қаріптер | Логотипіңіз екінші бетте бірден жүктеледі |
| CDN кэші | Келушілерге жақын дүние жүзіндегі серверлерде | Статикалық файлдар және кейде бүкіл беттер | Токиодағы келуші файлдарды сізден емес, жақын сервердән алады |
| Қолданба кэші | Серверде немесе оның жанында, көбіне жадта немесе Redis-те | Баяу сұраныстардың немесе сыртқы API шақырулардың нәтижелері | Бүгінгі валюта бағамдары, сағатына бір рет алынады |
| Деректер қоры кэші | Деректер қорының ішінде | Жиі қолданылған деректер мен сұраныс жоспарлары | Танымал жолдар жылдам жадта қалады |
CDN (content delivery network) — сайтыңыздың файлдарына арналған әлемдік кэштер желісі.
Кэш нені сақтауға шешеді
Әр кэш бірдей сұрақтарға жауап беруі керек:
- Нені кэштеуге болады? Ортақ, көпшілікке ашық деректер (тауар суреті, блог мақаласы) — иә. Жеке деректер (пайдаланушының аккаунт беті, хабарламалары) — ешқашан ортақ кэште емес.
- Қанша уақытқа? Бұл TTL (time to live, өмір сүру уақыты). Логотип бір жылға кэштелуі мүмкін; қойма қалдығы 30 секундқа.
- Қалай жаңартылады? Не көшірменің мерзімі бітіп, қайта алынады, не деректер өзгергенде қосымша оны әдейі алып тастайды — бұл инвалидация деп аталады.
Веб-сайттар үшін сервер браузерлерге және CDN-ге әр файлды қалай кэштеу керектігін Cache-Control тақырыбы арқылы айтады. Мысалы, Cache-Control: max-age=3600 дегені «бұл көшірмені бір сағатқа қайта пайдалануға болады» дегенді білдіреді.
Заманауи құрастыру құралдары статикалық файлдар үшін ең қиын бөлігін cache busting арқылы шешеді: файл өзгерген сайын оған саусақ ізі бар жаңа атау беріледі, мысалы app.3f9a2c.js. Браузерлер ескі атауды ұзақ уақытқа кэштей алады, өйткені жаңа нұсқаның атауы басқа.
Жұмыс мысалы: тауар каталогы
Сізде шағын онлайн дүкен бар. Басты бетте деректер қорынан алынған 50 тауар, бағасы мен қойма қалдығы, сондай-ақ барлық тапсырыстар бойынша баяу есептеуді қажет ететін «трендтегі» тізім көрсетіледі.
- Суреттер мен скрипттер браузер мен CDN арқылы ұзақ уақытқа кэштеледі. Әр жаңа құрастыру өзгерген файлдарға жаңа атау береді, сондықтан жаңартулар әлі де көрінеді.
- Трендтегі тізім әр 10 минут сайын бір рет есептеледі және қолданба кэшінде сақталады. Сол 10 минутта кірген әр келуші сақталған нәтижені бірден алады.
- Бағалар қысқа уақытқа кэштеледі, және тауарды өңдеген сайын кэш тазаланады, сондықтан тұтынушылар ескі бағаны ұзақ көрмейді.
- Төлем кезіндегі қойма қалдығы ешқашан кэштелмейді. Біреу «Сатып алу» түймесін басқанда, қосымша нақты деректер қорын тексереді, сондықтан жаңа ғана сатылып біткен тауарды сата алмайды.
- Себет пен аккаунт беттері ешқашан ортақ кэште сақталмайды, өйткені олар жеке.
Нәтиже: басты бет жылдам, деректер қоры әлдеқайда аз жұмыс істейді, ал ақша немесе құпиялылық үшін маңызды ештеңе ешқашан ескірмейді.
Негізгі терминдер
| Термин | Мағынасы |
|---|---|
| Кэш тигізуі / өткізбеуі | Дерек кэште табылды / оны бастапқы көзден алу керек болды. |
| TTL (time to live) | Сақталған көшірме қанша уақыт жаңа деп саналады. |
| Ескі деректер | Жаңартылмаған, ескірген кэштелген көшірме. |
| Инвалидация | Түпнұсқа өзгергендіктен кэштелген көшірмені әдейі жою. |
| Cache busting | Файл өзгергенде оның атауын немесе URL-ын өзгерту, сонда кэштер жаңа нұсқаны алады. |
| Cache-Control | Браузерлер мен CDN-ге жауапты қалай кэштеу керектігін айтатын HTTP тақырыбы. |
| Қатты жаңарту | Браузерге кэшін елемеуін айта отырып бетті қайта жүктеу. |
| Redis | Қолданба кэші ретінде жиі пайдаланылатын, жадтағы танымал деректер қоймасы. |
Жиі кездесетін қате түсініктер
- «Кэштеу әрдайым жақсы». Дұрыс емес нәрсені кэштеу нақты қателерге әкеледі: ескі бағалар, жаңа жазбалардың жоқтығы немесе ең нашар жағдайда бір пайдаланушының жеке беті басқаға көрсетілуі. Кэштеуді әдейі жасаңыз.
- «Ескі нұсқаны көрсем, жаңартуым сәтсіз болды». Әдетте олай емес. Бірдеңе бұзылған деп ойламас бұрын қатты жаңартуды (Ctrl+Shift+R, немесе Mac-та Cmd+Shift+R) немесе жеке терезені қолданып көріңіз.
- «Кэштеу баяу қосымшаны түзетеді». Ол қайталанатын сұраныстар үшін баяулықты жасырады. Алғашқы сұраныс әлі баяу, ал негізгі мәселе деректер қорының жетіспейтін индексі болса, оны да түзетіңіз.
- «Мүмкіндігінше ұзақ уақытқа бәрін кэштеу керек». Ұзақ кэш мерзімдері өзгергенде жаңа атау алатын файлдарға сай келеді. HTML беттері мен деректер үшін қысқа мерзім қауіпсізірек.
- «Кэшімді тазалау бәрі үшін түзетеді». Ол тек сіздің браузеріңізді тазалайды. Келушілер мен CDN кэштерінде әлі өз көшірмелері бар.
AI құрастырушыдан не сұрау керек
- «Бұл қосымшаның қай бөліктері баяу, және қайсысын қауіпсіз кэштеуге болады?»
- «[трендтегі тізімді / API нәтижесін] [N] минутқа кэштеңіз және негізгі деректер өзгергенде оны тазалаңыз.»
- «Жеке немесе аккаунт деректері бар ешбір бет CDN немесе ортақ кэш арқылы кэштелмейтінін қамтамасыз етіңіз.»
- «Саусақ ізі бар статикалық файлдарға ұзақ, HTML үшін қысқа кэш мерзімдерін орнатыңыз.»
- «[сыртқы API] жауаптарын кэштеңіз, сонда әр бет жүктелгенде оны шақырмаймыз — және бұл деректер қаншалықты ескіруі мүмкін екенін айтыңыз.»
- «Жариялағаннан кейін ескі нұсқаны көремін. Бұл браузердің кэші ме, әлде бірдеңе орналастырылмаған ба?»
Mythex-тегі кэштеу
Mythex қосымшасын жаңартып жарияласаңыз, құжаттамада CDN кэштері қысқа уақытқа артта қалуы мүмкін екені және жалпыға ортақ URL-дың қатты жаңартуы жаңа нұсқаны көрсететіні айтылған — Қалай жариялау қараңыз. Хостинг шектеулері беті статикалық активтерді кэштеуге кеңес береді, себебі хостинг, деректер қоры уақыты және трафик сіздің кредит балансыңыздан төленеді. Одан тыс нәрсе — сұраныс нәтижелерін немесе API жауаптарын кэштеу — агентке қосымшаңызға құрып беруін сұрайтын нәрсе.
Қосымша оқу: CDN дегеніміз не, сайтыңызды қалай жылдамырақ ету керек және жылдамдықты шектеу дегеніміз не.
Сұрақтар
Кэштеу қарапайым тілмен айтқанда не?
Кэштеу — алу баяу немесе қымбат болған нәрсенің көшірмесін сақтау, сондықтан оған келесі рет қажет болғанда сақталған көшірмеден тез жауап беріледі. Браузерлер, CDN-дер, серверлер және деректер қорлары қосымшаларды жылдамырақ әрі пайдалануға арзанырақ ету үшін кэшті пайдаланады.
Сайтымды жаңартқаннан кейін неге әлі ескі нұсқаны көремін?
Браузеріңіз немесе CDN ескі файлдардың кэштелген көшірмесін көрсетіп тұр. Қатты жаңарту (Windows-та Ctrl+Shift+R, Mac-та Cmd+Shift+R) көбіне мәселені шешеді. Келушілер үшін жақсы салынған сайттар жаңартылған файлдарға жаңа атау береді, сондықтан кэштер жаңа нұсқаны автоматты түрде алады.
Кэшті тазалау не істейді?
Браузер кэшін тазалау браузер сақтаған файлдар мен беттердің сақталған көшірмелерін жояды, сондықтан келесі жолы бәрін жаңадан жүктейді. Бұл бұзылған немесе ескірген көрінетін беттерді түзетуі мүмкін, ал кейін алғашқы жүктеу біраз баяу болады.
Кэштеу мәселе туғыза ала ма?
Иә. Негізгі қауіп — ескі деректерді беру: ескі баға, ескірген қойма қалдығы немесе одан да жаманы — бір пайдаланушының жеке бетін кэштеп, оны басқа адамға көрсету. Жақсы кэштеу ережелері нені кэштеуге болатынын, қанша уақытқа болатынын шешеді және жеке деректерді ортақ кэштерде ешқашан сақтамайды.