mboost-dp1

Disable Tomcat Servlet Cache


Gå til bund
Gravatar #1 - Windcape
27. maj 2009 23:35
Hey

Nogen der ved hvordan man disabler servlet cache (specifikt JSF) på Tomcat 6.0?

Google finder kun lort der dateres tilbage til Tomcat 3.x i 2001.

Samt jeg har prøvet mange forskellige metoder, og intet virker. Og nej, det er ikke browser cache, det har jeg disablet. Det er meget tydelig server cache, da det tager 10-15 sekunder før at der sker noget på update.

Og det er super irreterende at der ikke findes ordenlig dokumentation, samt at den overhovedet benytter cache som standard.

Lorte software -.-
Gravatar #2 - arne_v
27. maj 2009 23:51
#1

Hvad er det som bliver cachet som du ikke vil have cachet?

Hvis det er .class og .jar filer så prøv og sæt reloadable="true" på din context.
Gravatar #3 - arne_v
27. maj 2009 23:52
Hvis det er static resources så er det cachingAllowed="false".

Gravatar #4 - arne_v
28. maj 2009 00:13
Generelt bør du slet ikke arbejde direkte i webapps/foobar.

Du bør arbejde i et træ udenfor Tomcat træet, builde foobar.war og så kopiere den war til webapps.

Hvis du bruger ant til at builde med, så kan den også nemt kopiere.
Gravatar #5 - Windcape
28. maj 2009 05:35
arne_v (3) skrev:
Hvis det er static resources så er det cachingAllowed="false".
Det virker bare ikke!

Og ja, et er simple ting som at ændre

<h1>Hello 1234</h1>

til

<h1>Goodbye 5678</h1>

Som ikke opdaterer!

arne_v (4) skrev:
Generelt bør du slet ikke arbejde direkte i webapps/foobar.

Du bør arbejde i et træ udenfor Tomcat træet, builde foobar.war og så kopiere den war til webapps.

Hvis du bruger ant til at builde med, så kan den også nemt kopiere.
For hver eneste gang jeg ændre en linje html, css, javascript, eller lign. ?!?!

Jeg synes Tomcat er langsom nok til at genstarte allerede.
Gravatar #6 - Windcape
28. maj 2009 05:45
At tilføje følgene virker


<meta content="no-cache" http-equiv="Pragma"/>


Men jeg vil netop gerne have at min servlet container sender no-cache headeret automatisk, så jeg ikke skal putte det i samtlige filer jeg skal arbeje med, og senere fjerne det hvis det skulle i produktion!
Gravatar #7 - Windcape
28. maj 2009 06:42
Eller det virker faktisk ikke ret godt. Det er som om at Tomcat kun kan klare opdateringer hver 10 sekund.

Hvis jeg retter en værdi mere end hver 10 sekund, så skal jeg vente før den bliver fremvist på skærmen.

Og det er absolut ikke noget jeg har oplevet på Apache eller IIS!, så det er Tomcats skyld.
Gravatar #8 - Windcape
28. maj 2009 10:30
Samtidig driver Tomcat's cache af exceptions mig til vandvid.

Jeg trykker op F5 (opdater) og så skifter fejlmeddelsen hver anden gang jeg opdaterer.

Jeg burde nok droppe Tomcat fuldstændig. Nogle gode containers som er kompatible med Eclipse?
Gravatar #9 - arne_v
28. maj 2009 13:00
Windcape (5) skrev:

For hver eneste gang jeg ændre en linje html, css, javascript, eller lign. ?!?!


Jep. War filen er dit produkt - ikke hvad der ligger i et dir i server træet.

Windcape (5) skrev:

Jeg synes Tomcat er langsom nok til at genstarte allerede.


Du behoever ikke genstarte Tomcat - kun at genstarte app.
Gravatar #10 - arne_v
28. maj 2009 13:09
Windcape (5) skrev:
Det virker bare ikke!


Windcape (6) skrev:
At tilføje følgene virker


<meta content="no-cache" http-equiv="Pragma"/>


Men jeg vil netop gerne have at min servlet container sender no-cache headeret automatisk, så jeg ikke skal putte det i samtlige filer jeg skal arbeje med, og senere fjerne det hvis det skulle i produktion!


cachingAllowed="false" håndterer så vidt jeg ved Tomcat--on disk.

<meta content="no-cache" http-equiv="Pragma"/> håndterer browser--Tomcat.

Det er to helt forskellige ting.

Jeg er en lille smule puzzeled over hvorfor almindelig If-Modified-Since ikke løser det problem.

Men hvis du vil have en HTTP header som disabler caching med i alle responses, så kan jeg se to muligheder:
1) secure din web app ved at kræve login (så mener jeg at Tomcat selv disabler cache)
2) smæk et filter på

Gravatar #11 - arne_v
28. maj 2009 13:10
Windcape (7) skrev:
Eller det virker faktisk ikke ret godt. Det er som om at Tomcat kun kan klare opdateringer hver 10 sekund.

Hvis jeg retter en værdi mere end hver 10 sekund, så skal jeg vente før den bliver fremvist på skærmen.


Hvis du genstarter app, så tager det lidt tid.
Gravatar #12 - arne_v
28. maj 2009 13:18
Windcape (8) skrev:
Jeg burde nok droppe Tomcat fuldstændig. Nogle gode containers som er kompatible med Eclipse?


Alternative web only containere som er gratis inkluderer Jetty og Resin.

Så er der muligheden af at vælge en fuld container, men de vil typisk bruge en af ovennævnte.

JBoss kommer med Tomcat embedded.
GlassFish kommer med en modificeret Tomcat embedded.
Geronimo kan man vælge mellem Jetty og Tomcat.
Gravatar #13 - Windcape
28. maj 2009 15:54
Er der ikke en mulighed for at arbejde direkte på serveren, så er aldrig skal genstartes hverken som app eller server, men bare re-compiles hvis der ændres noget i Java delen.

Til ASP.NET kan jeg sætte et virtual dir til mit projekt i Visual Studio, og så bliver alle clientside ændringer opdateret i samme tid som ændringerne er lavet.

Det kan da umulig passe at JEE udviklere kun må opdaterer ændringer i deres kode hver 10 sekund.
Gravatar #14 - arne_v
29. maj 2009 01:40
Windcape (13) skrev:
Er der ikke en mulighed for at arbejde direkte på serveren, så er aldrig skal genstartes hverken som app eller server, men bare re-compiles hvis der ændres noget i Java delen.


Static content: muligvis.

Kode: nej (der skal ske noget specielt for at unloade kode).
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login