Svi servisi na internetu daju se, ugrubo podeliti na dve grupe: Pružaoci usluga (service provider) i pružaoci sadržaja (content provider). Lep primer ovoga je, sa jedne strane Limundo, kao sajt koji nudi uslugu i Oglasindo kao sajt koji nudi sadržaj. Ovaj članak je pokušaj da se tehnička suština ove razlike pojasni široj publici.
Većina sajtova koje gledate su posvećeni sadržaju. Ono što im je svima zajedničko u načinu rada je da je u pitanju sadržaj koji je isti za sve korisnike. Tipičan primer, pored Oglasinda, je i ovaj blog, ili bilo koji sajt sa vestima i sličnim sadržajima. Iako postoje urednici i neko ko objavljuje sadržaj sa tehničke strane taj sadržaj je de facto nepromenjljiv – tj. menja se jako retko. Čak i popularni novinski sajtovi vesti objavljuju na svaki sat, što je jako malo za posećen sajt – u tom satu oni prikažu desetine hiljada ili više članaka. Ono što je isto karakteristično je da su, po pravilu, samo neki članci čitani. Iako ovi sajtovi imaju arhivu koja ide godinama unazad, čita se, uglavnom, nekoliko desetina najnovijih. Od svih tih desetina hiljada poseta, preko 99% čini pregled jednog od 50 najčitanijih tekstova tog sata. A ti tekstovi su potpuno nepromenjljivi.
Ova osobina nepromenjljivosti je ono što daje ogromnu prednost u održavanju i optimizaciji ovih sajtova. Iako postoji napredan sistem kreiranja i uređivanja sadržaja i iako se ti saržaji čuvaju u složenoj strukturi, krajnji rezultat je potpuno statične prirode i služi se nepromenjen desetinama hiljada puta potpuno isti. Ovo, sa tehničke strane, omogućava da se jednom izgenerisana strana snimi u celosti, kao čist html i da se smesti u neko privremeno spremište (disk ili čak direktno u RAM) i da se odatle služi svaki sledeći put! Razlike u performansama su ogromne, neki spor CMS kao joomla može da generiše stranu i par desetina sekundi, ali to će se raditi samo pri prvom prikazivanju. Svaki sledeći put, tj. realno svaki put (izuzetak je samo prvi od par hiljada, ispod 0.1%) server služi sadržaj iz RAM-a, odakle ga može povući za par milisekundi, realno preko hiljadu puta brže.
Na suprotnoj strani su sajtovi koji nude usluge, tzv. service providers. Limundo je tipičan service provider, kao i npr. sajt vašeg e-banking-a. Stranice koje gledate na njemu su generisane tačno za vas, i to u trenutku kada ih zahtevate. Većina sadržaja je personalizovana vama (kao što je stanje računa, poruke i sl.), a, dodatno, i zavisna od vremena. Sve informacije na strani se zapravo menjaju u vremenu, jednostavno poruke pristižu, finansijske transakcije prolaze, vaš račun se puni ili prazni, drugi korisnici licitiraju, menja se vreme do isteka…
Sve ovo dovodi do jedne suštinske razlike u odnosu na sajt statične prirode: Nijedan sadržaj na strani nije isti u dva prikazivanja – ili to ne mora da bude. Svaki put kada se strana učitava ceo sistem mora da je ponovo izgeneriše, od nule, za svakog korisnika. Za razliku od content sajta gde jednom generisanu stranu server prikazuje u potpuno istom, neizmenjenom obliku desetinama hiljada puta, ovde se svaka strana prikazuje samo jednom, a zatim ponovo generiše, makar u pitanju bilo i prosto “osvežavanje” stranice.
Suština je razlika u performansama. Za razliku od content provajdera, gde performanse nisu kritične sve dok sloj za keširanje radi dobro, service provider mora da ima ceo sistem vrhunskih performansi. Dok neko ko prikazuje samo sadržaj može da radi na relativno malom sistemu service provider mora da ima veliki i dobro optimizovan sistem i mora da posveti pažnju svakom detalju. Ovo dalje podiže ne samo kompleksnost već i tehničke zahteve ka onima koji projekat realizuju, usložnjava ceo proces i podiže i krajnje troškove za više redova veličine.
odlican tekst, konacno neko da mi razjasni ovu stvar. Imam josh jedno pitanje: da li content provider koristiit HTML, a za service PHP?
@Invekta:
Ako razumem pitanje, moje misljenje je da ne treba nijedan sajt raditi kao staticki HTML. Za content sajtove treba koristiti neki dobar content management system, koji isto ima smisla da bude u php-u. WordPress na kome je ovaj blog je dobar primer. Naravno, ima smisla kesirati kompletan html na serverskoj strani, ali to je kesiranje, a ne pravljenje celog sajta statickim.
Za service provider sajt ja bi isao na custom resenje kao sto je i Limundo radjen. Ja bi i tu isao na PHP, ali niko vas ne sprecava da koristite i neko drugo okruzenje, ili CMS razvijen u nekom drugom jeziku. Svako treba da koristi ono sto najbolje poznaje.