Lucian Maran

home

Github pe post de CDN pentru fisiere statice (js). Probleme si solutii.

10 Nov 2013

Totul a plecat ca urmare a unei descoperiri intamplatoare.

Problema:

Pregatind un demo pentru unul din articolele precedente, am descoperit ca aplicatia (rulata in jsFiddle) functiona foarte bine in FF, dar nu si in Chrome sau IE. Fiind vorba doar de niste resurse statice (HTML, JS, CSS) am incercat sa copiez intreg codul intr-un singur fisier .html si sa-l rulez independent de contextul jsFiddle. Acelasi rezultat.

Pentru a pune in evidenta aceasta problema ma voi folosi de un exemplu concret: doresc sa folosesc biblioteca jqTree pentru a afisa un arbore cu 2 noduri.

Cauza si solutia:

Dupa scurt timp am identificat cauza: foloseam libraria jqTree in format 'raw' apelata direct de pe Github. Am pus acelasi fisier pe Dropbox si a totul a functionat ok, pe toate browser-ele.

Ok, acum ca stiu cum sa rezolv problema, ce mai e?

Curiozitatea. De ce cu biblioteca apelata de pe Github aplicatia nu functioneaza? Care este adevarata cauza a problemei (root cause)?

In plus, mi-am amintit ca nu o data am intalnit probleme (pe anumite browser-e) cu codul de pe jsFiddle la care diverse raspunsuri (Stackoverflow) faceau referire. Ar putea sa existe vreo legatura intre aceste probleme si scenariul descris mai sus? M-am hotarat sa investighez, dar sa o luam pe rand:

Initial doar IE, iar acum si Chrome, au introdus suport pentru nosniff. Acesta este motivul pentru care codul din varianta A functioneaza (inca) pe FF. Daca afisam fisierul direct din browser nu avem nicio problema fiindca acesta este prelucrat conform cu indicatiile Github – adica ca si "text/plain":

In concluzie: renunta la ideia de a folosi Github pe post de CDN!

Asta a fost tot.

comments powered by Disqus