[ dragon.mi @ 10.11.2008. 22:36 ] @
Imam intranet web aplikaciju koja u prezentacionom delu koristi JSF i to Richfaces biblioteku podataka. Video sam ovde dosta negativnih komentara o ovom okruženju ali šta da se radi.

U svom PhaseListeneru sam podesio da mogu da se koriste samo Internet Explorer 7 i Mozilla Firefox 3 pošto se kod tih browsera aplikacija najbolje pokazala s tim što se pod Mozillom izvršava uočljivo brže. Može da se radi u više tabova istovremeno bez ikakvih problema zahvaljujući pre svega <a4j:keepAlive/> tagu i to izgleda jako dobro.

Medjutim, postoji problem u korišćenju Back dugmeta i pokušao sam da primenim neku od brojnih javascript funkcija za vraćanje na stranu pre klika na Back dugme. U najvećem broju slučajeva to je i uspevalo ali u nekim slučajevima nije(verovatno zato što u 95% slučajeva koristim Ajax kod odgovora na akcije korisnika) i zbog toga sam od tog rešenja odustao.

Na kraju sam pronašao PhaseListener koji koji u svaku stranicu u header deo dodaje i deo kojim se kaze da nema keširanja stranica:

public class CacheControlPhaseListener implements PhaseListener {

/**
*
*/
private static final long serialVersionUID = 1L;
public PhaseId getPhaseId(){

return PhaseId.RENDER_RESPONSE;
}

public void afterPhase(PhaseEvent event) {}
public void beforePhase(PhaseEvent event){

FacesContext facesContext = event.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "must-revalidate");
response.addHeader("Expires", "Mon, 8 Aug 2006 10:00:00 GMT"); // some date in the past

}
}

I nakon toga u Internet Exploreru 7 ukoliko se klikne na dugme Back javlja se poruka "Webpage has expired". Mada ovo nije baš korisnički orjentisano ipak ukoliko ne nadjem neko drugo rešenje ću ovo i primeniti. Medjutim, u Firefoxu 3 se ne ponaša ovako već kao i pre tj. kao da ovo ignoriše. Interesuje me kako mogu podesiti da se i Firefox 3 ponaša kao Internet Explorer 7 tj. koju još direktivu da dodam u zaglavlje dokumenta? Voleo bih da koristim Firefox 3 pošto se dosta toga izvršava na klijentskoj strani zbog Ajaxa, a to se izvršava primetno brže kod Mozille 3.

Vidim da je ovo problem i kod nekih drugih server side okruženja ali je posebno izražen kod JSF (verovatno zbog post metoda slanja podataka na server) tako da ovo pitanje nije strogo vezano za JSF.

[ dragon.mi @ 21.11.2008. 07:35 ] @
Evo linka strane gde mogu da se nadju uputstva kako se moze upravljati kesom u Mozilla Firefox-3. Za potpuno eliminisanje kesa moze se primeniti savet broj 3 ali pitanje koliko je to dobro sa stanovista perfomansi:

http://www.davidtan.org/tips-reduce-firefox-memory-cache-usage/
[ dragon.mi @ 06.02.2009. 12:06 ] @
Konacno je u verziji 3.0.6 Mozilla-e Firefox otklonjen bug koji se odnosi na ignorisanje direktiva o nekesiranju stranica na klijentskoj strani. Moze se videti na strani: http://www.mozilla.org/securit...es/firefox30.html#firefox3.0.6 (MFSA 2009-06).
U svom Phase Listeneru sam samo red: response.addHeader("Cache-Control", "no-cache") zamenio sa: response.addHeader("Cache-Control", "no-store").
Sada sve funkcionise kao da sam izvrsio podesavanja na klijentskoj strani u okviru samog browsera na stranici about:config.

Inace, koga zanima moze da pogleda i RestFaces framework ( https://restfaces.dev.java.net/ ) koji moze da kreira GET zahteve umesto POST zahteva koje inace koristi JSF! Isprobao sam i odlicno se ponasa u odnosu na koriscenje Back dugmeta, a moze i da se vrsi bookmarking! Medjutim, u nekim situacijama postoji problem kada se ukljuci i Ajax i kada se koristi Back dugme ali to je i inace problem i kada se ne koristi RestFaces.