13. august 2007 - 14:29Der er
13 kommentarer og 1 løsning
ASPImage viser ikke det nyeste billed
Jeg har en funktion som tilføjer en tekst til et billed som allerede ligger på serveren, og teksten ændre sig gang på gang (5 tilfældige bogstaver) og så vises billedet lige efter det er lavet, det virker godt nok hvis man ikke har besøgt siden før for første gang vises billedet rigtigt, men hvis man ikke lukker browseren og besøger siden senere, så er det det samme billed den viser men det billed der liger på serveren har ændret sig og de 5 bogstaver passer ikke længere:
<% imgPath = "d:/web/localuser/domain.dk/img/"
Set Image = Server.CreateObject("AspImage.Image") Image.LoadImage(imgPath & "mit.jpg")
det er fordi jeg har forsøgt mig med at lave en "primitiv" sikring af en tagwall så man skal skrive en 5 cifret kode, som laves tilfældigt med dette:
Function word(keySize) chars = "aAbBcCdDeEfFgGhHijJkKLmMnNopPqQrRsStTuUvVwWxXyYzZ1234567890" strKey = "" randomize for i = 1 to keySize index = Int(rnd * len(chars))+1 strKey = strKey & Mid(chars,index,1) next word = strKey End Function
når man går ind på siden, og de 5 cifre laves så om til et billed, men jeg skal refresh siden før det er det rigtige billed der kommer frem!
fordi det er i et brugersystem! og jeg kan se at det er generelt for når jeg fx. uploader et andet profil billed end det jeg har, så skal jeg også opdater browseren for at det ændre sig!
nej det er sådan at det står i en fil, som includes på alle de sider som bliver "Server.Execute" i min default.asp side - har lige forsøgt at illustrere det :)
Alternativt skal Response.Expires (...osv) nok ind i ASPImage-dokumentet også. Har ikke arbejdet meget med Server.Execute, men muligvis kræver alle siderne en Expires, hvis man vil være sikker på at undgå dette.
Hej. Næh jeg tror ikke det hjælper. Problemet her er vist at det ikke er selve aspsiden (eller html siden) der caches, men billedet msg1.jpg - hvis der sættes en tilfældig tekst efter billedet opfattes det som et nyt billede.
Hvad med om du flyttede din billedkode ud i et separat ASP-script der skriver direkte ud til browseren, og så benytter det som stien til dit billede - på den måde slipper du også for den race condition du har når to brugere tilgår scriptet samtidigt.
Det bliver svært at gå meget mere i detaljer, da jeg ikke kan ASP, men i korte træk:
1) Flyt al den kode der har med genereringen af det billede at gøre ud i en seperat ASP-fil. 2) Lav koden om så den ikke skriver til en fil, men i stedet bare direkte til browseren. 3) Sæt content-type (image/jpeg i dette tilfælde) og cache-tingene inde i denne ASP-fil. 4) Brug den nye ASP-fil som dit billede (og ja, den skal have filtypen .asp).
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.