Što je CDN? Mreže za isporuku sadržaja jednostavno objašnjeno
CDN (content delivery network) je mreža poslužitelja raspoređenih u mnogim gradovima koji čuvaju kopije datoteka vaše web stranice: slika, skripti, stilskih predložaka, ponekad i čitavih stranica. Kad netko posjeti vašu stranicu, poslužuje se s lokacije blizu njega umjesto s jednog udaljenog poslužitelja. Stranice se time brže učitavaju, opterećenje s vašeg poslužitelja se smanjuje, a stranica lakše podnosi nagle skokove prometa.
Zašto su CDN-ovi važni kad gradite uz AI
CDN možda nikad nećete sami postaviti, jer mnoge platforme za hosting automatski stavljaju jedan ispred vaše stranice. Ali njegove učinke ćete osjetiti:
- Brzina. Stranice koje se brže učitavaju drže posjetitelje i jedan su od čimbenika koje tražilice uzimaju u obzir. Pogledajte kako ubrzati web stranicu.
- „Zašto se moja promjena ne vidi?” Nakon što objavite ažuriranje, kopija stare verzije može se zadržati u predmemoriji još kratko vrijeme. Kad znate zašto, uštedjet ćete mnogo zbunjenosti.
- Privatnost i ispravnost. Ako CDN predmemorira krivu stvar, na primjer stranicu s podacima jednog korisnika, sljedeći posjetitelj može to vidjeti. Kad znate što smije, a što ne smije biti predmemorirano, lakše ćete postaviti pravo pitanje.
Svakodnevna usporedba
Zamislite pekaru koja prodaje kruh po cijeloj zemlji iz jedne prodavaonice. Svaki kupac, koliko god bio daleko, mora čekati dostavu iz te jedne prodavaonice, a na prometan dan red je ogroman.
CDN je kao da se isti kruh stavi u lokalne male trgovine diljem zemlje. Kupci ga kupuju blizu, brzo, a glavna pekara mora povremeno dopuniti te trgovine. Zamka je ovdje: kad pekara promijeni recept, male trgovine i dalje prodaju stari kruh, dok im se ne kaže da ga zamijene ili dok stari zalihe ne isteknu.
Kako CDN radi
- Vaš izvor. Vaša stranica živi na glavnom poslužitelju ili u hosting platformi, koja se zove izvor (origin).
- Rubne lokacije. CDN ima poslužitelje na mnogim mjestima, koji se zovu rubne lokacije (edge locations) ili točke prisutnosti (points of presence).
- Usmjeravanje. Kad posjetitelj zatraži vašu stranicu, DNS ili mrežno usmjeravanje ga šalje na najbližu rubnu lokaciju. Pogledajte kako rade domene i DNS.
- Pogodak u predmemoriji (cache hit). Ako rubna lokacija već ima svježu kopiju datoteke, odmah je šalje.
- Promašaj predmemorije (cache miss). Ako nema, rubna lokacija dohvaća datoteku s vašeg izvora, šalje je posjetitelju i zadržava kopiju za sljedeću osobu.
- Istjecanje. Svaka kopija se čuva zadano vrijeme, određeno zaglavljima predmemorije (cache headers) koja šalje vaš poslužitelj, ili dok se ne očisti.
Primjer: portfolio stranica s fotografijama
Portfolio fotografa ima početnu stranicu, galeriju sa 60 velikih slika i obrazac za kontakt. Izvor je u Europi. Posjetitelj iz Singapura otvara galeriju.
- Bez CDN-a: svaka slika putuje iz Europe. Svaki zahtjev ide preko pola svijeta, pa se galerija puni sporo.
- Uz CDN: prvi posjetitelj blizu Singapura uzrokuje da rubna lokacija tamo dohvati i pohrani slike. Svi kasniji posjetitelji u toj regiji dobivaju ih s bliske lokacije, znatno brže.
Sada fotograf zamijeni glavnu sliku početne stranice i ponovno objavi. Ovo određuje hoće li posjetitelji vidjeti promjenu:
/index.html → kratko vrijeme predmemorije, često se provjerava
/assets/index-3f9a2c.js → dugo vrijeme predmemorije
/assets/hero-8b41d0.jpg → dugo vrijeme predmemorije
Moderni alati za izgradnju, uključujući Vite, daju datotekama hash nazive poput hero-8b41d0.jpg. Kad se datoteka promijeni, promijeni se i njezin naziv, pa stranica traži potpuno novu datoteku koju nijedna predmemorija još nije vidjela. Sama HTML stranica predmemorira se samo kratko, pa brzo upućuje posjetitelje na nove datoteke. To je standardan način da se dobije i dugo predmemoriranje i svježa ažuriranja.
Obrazac za kontakt je drugačiji. Njegova slanja uvijek idu na poslužitelj i nikad se ne bi smjela predmemorirati.
Što predmemorirati, a što ne
| Obično se predmemorira dugo | Obično kratko | Ne predmemorira se u zajedničkom CDN-u |
|---|---|---|
| Slike, fontovi, video | HTML stranice javne stranice | Stranice za prijavljene korisnike, nadzorne ploče |
| JavaScript i CSS s hash nazivima | Javni API podaci koji se povremeno mijenjaju | Sve s osobnim podacima |
| Datoteke za preuzimanje koje se rijetko mijenjaju | Slanja obrazaca, plaćanja, svaki POST zahtjev |
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Izvor (origin) | Vaš glavni poslužitelj ili hosting, gdje stvarno žive datoteke. |
| Rubna lokacija / PoP | Lokacija CDN-a koja poslužuje posjetitelje u blizini. |
| Pogodak / promašaj predmemorije | Rubna lokacija je imala datoteku / morala ju je dohvatiti s izvora. |
| TTL | Time to live: koliko dugo se kopija u predmemoriji čuva. |
| Cache-Control zaglavlje | Uputa koju vaš poslužitelj šalje o tome smije li se i koliko dugo nešto predmemorirati. |
| Očistiti / invalidirati | Reći CDN-u da odmah baci kopije iz predmemorije. |
| Razbijanje predmemorije (cache busting) | Promjena naziva ili URL-a datoteke kad se ona promijeni, kako bi predmemorija dohvatila novu. |
| Latencija | Kašnjenje uzrokovano udaljenošću i mrežnim skokovima. |
Za predmemoriju općenito, u preglednicima, poslužiteljima i bazama podataka, pogledajte što je predmemorija.
Česte zablude
- „CDN sve čini bržim.” Ubrzava isporuku datoteka. Spor upit prema bazi podataka ili spor AI poziv na vašem poslužitelju i dalje su spori.
- „CDN zamjenjuje hosting.” On stoji ispred vašeg hostinga. I dalje vam treba izvor.
- „Ako sam ažurirao stranicu, svi je odmah vide.” Stare kopije se mogu kratko zadržati u CDN-u i u preglednicima. Provjerite tvrdim osvježavanjem i koristite hash nazive datoteka.
- „Predmemoriranje je uvijek sigurno.” Predmemoriranje personalizirane stranice u zajedničkoj predmemoriji stvarni je rizik za privatnost. Privatne odgovore treba označiti kao nepredmemorirljive.
- „CDN-ovi su samo za velike tvrtke.” Mnogi hostovi uključuju ga za male stranice bez dodatnog truda.
Što tražiti od AI graditelja
- „Postoji li CDN ispred ove stranice? Koje datoteke predmemorira i koliko dugo?”
- „Pobrini se da izgrađeni JavaScript, CSS i slike imaju hash nazive i dugo vrijeme predmemorije, a HTML kratko.”
- „Nikad ne predmemoriraj stranice za prijavljene korisnike ni API odgovore s osobnim podacima u zajedničkoj predmemoriji.”
- „Komprimiraj i smanji slike da se galerija brzo učitava.”
- „Objavio sam ažuriranje, ali i dalje vidim staru verziju. Je li to predmemorija preglednika ili CDN?”
CDN i Mythex
Kad objavljujete na Mythexu, statički frontendi se postavljaju kao statičke stranice, a dokumentacija bilježi da predmemorije CDN-a mogu kasniti kratko vrijeme nakon ažuriranja. Ako i dalje vidite staru verziju nakon ponovnog objavljivanja, tvrdo osvježite javni URL. Za to nema što konfigurirati. Ako povežete prilagođenu domenu čiji je DNS na Cloudflareu, dokumentacija traži da zapis postavite na „DNS only”, a ne „proxied”, kako bi Mythex ispravno izdao HTTPS. Pogledajte kako objaviti i prilagođene domene u dokumentaciji te naš vodič o web hostingu.
Pitanja
Što je CDN, jednostavno rečeno?
CDN (content delivery network, mreža za isporuku sadržaja) je mreža poslužitelja na mnogim lokacijama koji čuvaju kopije datoteka vaše web stranice. Posjetitelji se poslužuju s lokacije blizu sebe, a ne s vašeg glavnog poslužitelja, pa se stranice brže učitavaju i vaš poslužitelj manje radi.
Zašto i dalje vidim staru verziju stranice nakon ažuriranja?
Obično zato što je kopija stare datoteke spremljena u predmemoriju, u CDN-u, u pregledniku ili u oba. Tvrdo osvježavanje rješava stranu preglednika, a kopije u CDN-u istječu same ili se mogu očistiti. Alati za izgradnju većinu toga izbjegavaju tako da promijenjenim datotekama daju nove nazive.
Treba li mi CDN za malu web stranicu?
Često ga imate, a da ga niste birali, jer mnoge platforme za hosting automatski stavljaju CDN ispred stranica. Ako ga nemate, a vaši posjetitelji su raspršeni po državama, dodavanje CDN-a obično se isplati.
Može li CDN predmemorirati podatke moje aplikacije i stranice za prijavljene korisnike?
Može predmemorirati sve što mu je dopušteno, zato se mora pažljivo postaviti. Javne datoteke poput slika, skripti i stilova idealne su za predmemoriju. Osobni sadržaj ili stranice za prijavljene korisnike obično se ne smiju predmemorirati u zajedničkom CDN-u, jer bi jedan korisnik mogao vidjeti tuđe podatke.