Statika i GET
Negde sam pročitao, dosta davno, da korišćenje GET parametera kod statičkih fajlova sprečava IE da kešira stvari. activeCollab JS servira kroz kolektor skriptu koja skupi sve JS-ove, GZIP-uje ih i sve ih pusti kao jedan fajl. Skript ispravno setuje content-type i expires headere i client side je stvarno poleteo kada smo je dodali.
E sad, zanima me da li je ovo što sam pročitao istina ili sam nešto pogrešno razumeo (sada ne mogu da nađem ništa). Treba da nakačim niz parametara na kolektor skript, ali bi to ubilo kompletno poentu ako browser ne bi mogao da kešira stvari. http://activecollab.dev/js.php?v=1.1...resource,stuff Da li je neko imao iskustva sa ovim? |
Da prepakuješ sve pomoću ModRewrite pa da fajl bude
/js-v11_system_resource_stuff.js jedino je možda zeznuto što se aC instalira na raznim sistemima pa ćeš morati dodatno da objašnjavaš klijentima i kako da uključe ModRewrite i sl. A da li je uopšte tačna ova konstatacija za keširanje? To može lako da se proveri, zar ne? |
Citat:
Nemam dignut Apache, PHP, MySQL na virutalnoj mašini gde imam IE6. Ako ništa podesiću to pa probati još večeras. U međuvremeno ako neko zna nešto samo pucajte! PS: mod_rewrite nije opcija. |
Ni jedan browser ne keshira stvari ukoliko mu URL nije identican... Dakle,
adrese http://smor.com/test.php?id=1 i http://smor.com/test.php?id=2 svi browseri kontaju drugacije... I samim tim ne radi kesiranje... Do ovog zakljucka sam dosao nakon sto sam morao da dodajem neke gluposti u parametar koji prosledjujem skripti da bih zaobisao kesiranje browsera... Inace ovo je licno iskustvo... |
Da, to je tačno.
Različit URL (uključujući i parametre) -> različit fajl i različito se kešira. Potpuno iz iskustva; dodavali smo nešto kao ? .... ×tamp=xxxxxx da bi upravo sprečili keširanje. |
to zavisi od podesavanja browsera, ali ako se dobro secam, default podesavanja IE 6 su takva da identican URL vuce iz cache-a...
meni je trebalo da ne vuce iz cache-a, pa sam morao da dodajem ?rand=neki_random_broj |
ali treba napomenutni da ukoliko dva puta pristupish http://smor.com/index.php?id=1
drugi put ce da se vuce iz kesha... |
Citat:
Generalno mislim da to nije tačno i da će sasvim lepo sve raditi i u IE-u, ali neka proveri, ne košta ga ništa. |
a sto ne isprobate? Napravi dummy url, pozovi ga iz dvaput IE, pa pogledaj log fajl
|
Svaki jedinstveni URL se po default kesira, osim ako nije u pitanju PHP skripta pa onda doda odredjena zaglavlja koja "ubiju" kesiranje.
Ja koristim sledeci kod za kesiranje javascript fajlova (url je tipa /js/prototype.js;/js/behaviour.js;/js/scriptaculous/effects.js) : PHP kôd:
Pomocu funkcije apache_request_headers pokupim sva zaglavlja koje browser salje i uporedim If-Modified-Since sa $last_modifled fajla. Ako nije skoro editovan neki fajl, saljem zaglavlje 304 Not Modified, ako jeste, saljem nov sadrzaj i postavljam zaglavlja E-tag i Last-Modified. Inace, sve ovo radi zbog toga sto kad browseru posaljes Last-Modified zaglavlje, on ce te sledeci put pitati sa If-Modified-Since. P.S. postoji problem sto kod nekih PHP instalacija nema funkcije apache_request_headers :( |
a sto ne napravite skript koji jednom odradi to spajanje, pa onda servirate staticku stranu, a u Apachu podesite za JS MIME to koliko da se kesira, sa mod_expire, tipa:
ExpiresByType text/javascript A2592000 Ipak je mnogo vece cimanje serveru da uvek pokrece php, procesira skripta, spaja fajlove... |
Nakon kraćeg testiranja, ovo radi i u Firefoxu i u Safariju:
PHP kôd:
Treba još da se malo poigram sa IE, ali to kada sednem za Win mašinu. Pošto u URL upržavam i verziju aplikacije i uključene module mogu da stavim cache i 2 godine, a da se ne bojim da će biti nevalidan. Kada se odradi upgrade ili instalira / deinstalira modul generiše se novi URL i novi fajl: http://activecollab.dev/public/asset...p,timetracking ... |
Ipak treba izbaciti must-revalidate.
PHP kôd:
|
Vreme je GMT +2. Trenutno vreme je 13:50. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.