[ Zox @ 04.08.2004. 18:56 ] @
Pozdrav,

Elem, radim sajt u nekoliko jezickih varijanti. i sad naravno, na prvoj strani posetilac izabere svoj jezik, to mu stavim u sessiju i to ga prati tokom cele posete sajtu.
Imam takodje i tabelu u bazi gde su svi textovi koji se pojavljuju na stranicama smesteni po jezicima i kad posetilac pristumi strani, pozvam funkciju koja mi cita iz baze text broj taj i taj a u koloni koja odgovara izabranom jeziku. u toj funkciji kreiram recordset, nalazim trazeni text u bazi, ispisujem ga na stranii zatvaram recordset.
To je princip koji sam do sada primenjivao na par visejezicnih sajtova ali ni na jednoj stranici nisam imao vise od 7-8 do 10ak tih "textova koji zavise od jezika". To znaci da je sever ne vise od 10ak puta po stranici otvarao i zatvarao Recordset.
I to uglavnom funkcionise jer mi i sajtovi nemaju preveliku posecenost, retko se desava da dva posetioca u bas isto vreme pristupe istoj strani...

Medjutim sad sam u situaciji da pravim sajt gde sa na stranicama pojavljuje i vise texta koji treba da se prilagodi izabranom jeziku.
Naravno alternativa je da pravim posebne subfoldere sa identicnim sadrzajem osim sto je text na odgovarajucim mestima adekvatno izmenjen... Medjutim plasim se da ako se pojavi potreba da na nekoj strani neki text promeinm ili cak dodam, bice to onda mucan posao, otvarati fajl iz svake jezicke varijante, traziti gde je text, menajti ga i opet slati na server...

Ideja mi je da eventualno sve textove, poruke i sl. smestim u txt fajl (u stvari za svaki jezik po jedan txt fajl) i da onda preko FSO-a im pristupam i "vadim" onu liniju txt fajla koja mi u datom momentu treba. Na taj nacin bih izbegao stalno kreiranje i zatvaranje recordset-a i stalno obracanje servera databazi, sto bi mi potencijlano bilo usko grlo u brzini izvrsavanja skripta...

Medjutim, pitanje na koje nisam nasao odgovor cak ni guglajuci je, sta je brze:
- pristupanje databazi (znaci minimum dva koraka; kreiranje recordseta, zatvaranje recordseta uz ispisivanje trazenog sloga u medjuvremenu) ili
- pristupanje txt fajlu preko FSO (to podrazumeva: Kreiranje FSO-a, trazenje odgovarajuce linije kroz DO LOOP, njeno ispisivanje i zatvaranje FSO)

takodje me zanima i kako to izgleda u smislu zauzeca memorijskih resursa servera, sta je bolje po memoriju.


Ako imate neki point gde na netu su dikutovali o ovome, bio bih veoma zahvalan.
[ Mashinovodja @ 05.08.2004. 10:47 ] @
Problem visejezickih sajtova nije nimalo jednostavan i nema univerzalnog resenja. Sve zavisi od toga koliko blokova promenljivog teksta imas po stranici, koliko su veliki, da li se cesto menjaju, koliko posetilaca sajta predvidjas, sta biva sa starim tekstovima itd, itd.
Po meni, FSO je OK za manje kolicine kracih blokova teksta. Ja ga najcesce koristim za ucitavanje raznih fajlova s parametrima ili fiksnim tekstom koji se pojavljuje na svakoj stranici sajta i tome slicno. Za tu namenu baza podataka nije dobro resenje i svodi se na ono "topom na komarca".
Pristup podacima u bazi podataka moze biti vrlo brz ako napravis dobru organizaciju podataka (kljucevi i indeksi). Kad radis s bazom podataka "najskuplje" nije ucitavanje podataka, vec otvaranje konekcije, narocito ako svaki put citas vrlo malu kolicinu podataka. Zato treba treba minimizovati pre svega broj otvaranja konekcija po stranici. Ako ukupna kolicina teksta dozvoljava, koristi sesijske promenljive, mozda cak i globalne, ako imas iste blokove teksta koji se pojavljuju na svim stranicama sajta. Naravno, sesijske promenljive trose memoriju, tako da nisu pogodne ako broj posetilaca sajta brzo raste. Onda ti je jedino resenje baza podataka.
Kao sto si i sam uocio, postoji problem odrzavanja teksta. Kad su blokovi teksta razmesteni po .txt fajlovima njima se moze lako upravljati do izvesne velicine, ali ako kolicina teksta raste, to postaje nepregledno, a ucitavanje sve sporije. Odrzavanje teksta za sajt je po mom misljenju lakse kada je tekst u bazi podataka. Moras samo da napravis nekoliko administratorskih skriptova koji se u vrlo slicni obicnim korisnickim skriptovima, jedina razlika je sto omogucavaju i upisivanje podataka a dostupni su samo korisnicima koji imaju status administratora. To jeste malo vise posla na pocetku, ali kasnije nemas petljanja sa odrzavanjem sadrzaja sajta.
[ Zox @ 07.08.2004. 01:24 ] @
Interesantno vidjenje... Uglavnom se slazemo po svim tackama.

Reci mi ovo... da li pod "otvaranjem konekcije" mislis na kreiranje konekcije ka bazi ili kreiranje rekordset-a?


[Ovu poruku je menjao Zox dana 07.08.2004. u 03:25 GMT]
[ Zox @ 07.08.2004. 01:25 ] @
I da, zaboravih..
imas li neki point na Netu gde se diskutuju o ovome?
[ byTer @ 07.08.2004. 10:22 ] @
Ma ne treba vise diskutovati o tome. Sve biblioteke koje rade sa bazama se smestaju u cache, tako da to pichi brzo. Za krajnjeg korisnika... ajde nemoj da ste smesni...
[ Zox @ 07.08.2004. 15:23 ] @
A sta je sa bibliotekama koje rade sa fajlovima? Gde se one smestaju?
[ byTer @ 08.08.2004. 13:48 ] @
Pa lakse ti je da radis sa bazama.
[ mladenovicz @ 08.08.2004. 16:35 ] @
Ako vec neces da koristis bazu, onda ti je XML mnogo zgodniji od txt fajla
[ trivuns @ 09.08.2004. 09:53 ] @
Za jezičku lokalizaciju je najbolje koristiti resource file.
msdn.microsoft.com/library/en-us/ vbcon98/html/vbconusingresourcefiles.asp
[ Mashinovodja @ 09.08.2004. 12:27 ] @
Otvaranje, ili kako ti kažeš, kreiranje konekcije jer sistem mora da pronađe server koji si zahtevao, da vidi s njim imaš li ti pravo pristupa tom serveru, kao i toj bazi podataka na serveru, pa ako imaš, da pronađe i otvori fizički fajl gde bi se ti podaci mogli nalaziti. Posle toga formiranje ili kreiranje Recordseta ide vrlo brzo jer server mora samo još da učita blok podataka koji si tražio (što je izuzetno brzo ako imaš dobro podešene indekse na serveru) i da ti ga pošalje, celog ili samo deo.
Negde sam iskopao informaciju da otvaranje svake nove konekcije ka SQL Serveru "košta" oko 40 KB u memoriji. To na prvi pogled ne izgleda baš mnogo, ali to treba inicijalizovati podacima, koje treba potom održavati za sve vreme trajanja konekcije. Kad server gađa 10-ak korisnika istovremeno, od kojih svaki po jednoj stranici otvori i zatvori konekciju 5-6 puta, to i nije neki problem, ali kad ga istovremeno gađa više hiljada korisnika, onda server itekako počinje da kleca pod opterećenjem i moraš potražiti mogućnosti optimizovanja aplikacije.
Jedan od predloga je da koristiš resource datoteke (uzgred, dati URL ne radi). Imam vrlo malo iskustva s time i znao bih kako da primenim takvo rešenje u VB aplikaciji, ali ne znam kako bi to izgledalo u ASP aplikaciji (ako je uopšte upotrebljivo).
Ideja o upotrebi XML-a nije loša, ali sve zavisi od toga koliko je komplikovana struktura blokova teksta koje imaš, kako su međusobno povezani i zavisni itd. Ako moraš da se petljaš sa XML upitima (koji nisu baš jednostavni) da bi sastavio tekst stranice, a nemaš iskustva s time, niti imaš vremena da ga prvo stekneš, onda ti je lakše i brže da sve smestiš u bazu i koristiš obične SQL SELECT upite, čije osnove verovatno već znaš.
[ Zox @ 11.08.2004. 02:29 ] @
Hvala momci.
Koristila mi je diskusija...
Ipak sam odabrao bazu kao resenje, pre svega zbog vremena koje imam na raspolaganju a za to vec imam gotove funkcijei sub-ove.