Avatar billede kenneth_breve Nybegynder
18. juni 2009 - 15:59 Der er 7 kommentarer og
1 løsning

Hvorfor er billedet på min jLabel cached?

Har en applet hvor jeg på en jLabel viser billedet map1.gif


URL urlMap1 = new URL (getDocumentBase(), "maps/map1.gif");
Icon iconMap1 = new ImageIcon(getImage(urlMap1));
jLabelMap1.setIcon(iconMap1);


Problemet er hvis jeg ændrer billedet og næste gang loader appleten så blir billedet cached.

Hvordan slår jeg det fra?
Avatar billede arne_v Ekspert
18. juni 2009 - 17:14 #1
Og det er ikke det samme problem som i http://www.eksperten.dk/spm/873597 ?
Avatar billede kenneth_breve Nybegynder
04. juli 2009 - 15:20 #2
Hej Arne

Nej det er ikke det samme problem.

Jeg har læst en hel del forskellige sider om problemet. Der er nogen som har haft held med at lave billedet om til en binær fil og derefter indlæse den.


Men jeg er stadig ikke helt klar over hvordan tilgangen til denne løsning skulle være... :-(
Avatar billede arne_v Ekspert
05. juli 2009 - 01:58 #3
Billedet er vel en binær fil.

Har du fået undersøgt lidt hvor den bliver cachet ?

Hvis de to teknikker fra det andet spørgsmål ikke virker så kan du evt. prøve med et download script som sætter diverse no cache headere på.
Avatar billede kenneth_breve Nybegynder
06. juli 2009 - 19:45 #4
Umiddelbart ser det ud som om den bliver cachet i java temporary files. Men det nytter ikke noget at sætte cacher loader til false.

Hvordan kunne man benytte et download script? Prøv at uddybe lidt.
Avatar billede arne_v Ekspert
07. juli 2009 - 03:34 #5
Du henter fra:

http://www.noget.dk/dowload.php?file=foobar.gif

Hvor download.php bare streamer GIF filen ud men sætter et hav af no cache headere.
Avatar billede kenneth_breve Nybegynder
07. juli 2009 - 09:42 #6
Perfekt Arne!

Nu virker det.

Nederst ses koden ses streamer et gif billede retur hvis andre skulle være interesseret.

<%
' no browser caching of this page
Response.Expires=-1
Response.ExpiresAbsolute = Now() - 1

' do not allow proxy servers to cache this page !! to be used on all pages
Response.CacheControl="private"
Response.CacheControl="no-cache"
Response.CacheControl="no-store"

Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")

'Open a image file
objStream.Type = 1 ' adTypeBinary
objStream.Open
objStream.LoadFromFile Server.MapPath(img)

'Output the contents of the stream object
Response.ContentType = "image/gif"
'Response.ContentType = "image/jpeg"
Response.BinaryWrite objStream.Read

objStream.close
Set objStream=nothing
%>
Avatar billede kenneth_breve Nybegynder
07. juli 2009 - 09:47 #7
Smid forresten et svar så du kan få pointene :-)
Avatar billede arne_v Ekspert
07. juli 2009 - 14:45 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester