/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Caching af billeder
Fra : //Andreas


Dato : 31-08-05 10:35

Hej

Jeg har lavet et lille administrations-modul til måske 500 tekst-sider. Her
har jeg så lavet en liste over alle tekst-siderne vha. paging - hver side
bliver delt op med 75 linier på hver. Hver linie (post) har et ikon for
"Slet", "Rediger" og "Tilknyt" - og disse ikoner fylder ikke mere end
1kb/stk., men eftersom billederne ikke bliver cachet, skal der for tre
ikoner på hver linie hentes 225 ikoner pr. side - og det er for langsomt. I
nedderste venstre hjørne af IE står der f.eks. "mangler 225 elementer" -
gaaab.

Jeg ved, at man kan cache sine sider vha. sin IIS - det er desværre bare
ikke alle ISP'ere, der "gider" at aktivere caching - og teksten skal jo
heller ikke caches, da den er dynamisk.

For at løse ovenst. problem har jeg lavet en kode, som egentlig burde cache
billedet (og KUN billedet), men jeg kan ikke rigtig få det til at virke
optimalt - dvs. min kode virker fint, men den cacher bare ikke så meget

Ved brug af min, skal et billede altså kaldes således <img
src="ChacheImageView.asp?FileURL=test.gif">
Koden ser sådan ud.

'============= START ==============
<%

Call ChacheImageView(Request("FileURL"))


Sub ChacheImageView(strFileURL)

If Len(strFileURL) < 5 Then Exit Sub

Response.Buffer = False
Server.ScriptTimeout = 15

Dim strFuldeSti, strFilNavn, dblSize

strFilNavn = strFileURL

If Instr(Request.ServerVariables("PATH_TRANSLATED"), "\") > 0 Then
dim i
i = 0

Do while NOT i >= Len(Request.ServerVariables("PATH_TRANSLATED"))
i = i + 1
'Response.write "strAktuelFolder = " & strAktuelFolder & "<br>"
strAktuelFolder = Left(Request.ServerVariables("PATH_TRANSLATED"),
Len(Request.ServerVariables("PATH_TRANSLATED")) - i)
If Right(strAktuelFolder, 1) = "\" Then Exit Do
Loop
Else
strAktuelFolder = Request.ServerVariables("PATH_TRANSLATED")
End If

strFilNavn = Replace(strFilNavn, "/", "\")
strFuldeSti = strAktuelFolder & strFilNavn


'Response.write Request.ServerVariables("PATH_TRANSLATED") & "<br><br>"
'Response.write "strAktuelFolder = " & strAktuelFolder & "<br>"
'Response.write "strFilNavn = " & strFilNavn & "<br>"
'Response.write "strFuldeSti = " & strFuldeSti & "<br>"
'Response.end

intOffset = 60 * 60 * 24 * 2 '2 days before expire
strExpire = Now() + intOffset

'Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control", "public"
Response.CacheControl = "cache"

Response.Expires = intOffset
Response.Expiresabsolute = Date() + 2
Response.AddHeader "cache-control", "max-age=" & intOffset

If lcase(Left(strFilNavn, 4)) = "jpeg" Or lcase(Left(strFilNavn, 3)) =
"jpg" Then
Response.ContentType = "image/jpeg"
ElseIf lcase(Left(strFilNavn, 3)) = "gif" Then
Response.ContentType = "image/gif"
ElseIf lcase(Left(strFilNavn, 3)) = "png" Then
Response.ContentType = "image/png"
End If

Response.AddHeader "Content-Disposition", "filename=""" & strFilNavn & """"

Response.AddHeader "Connection", "close"

Set adoStream = CreateObject("ADODB.Stream")
adoStream.Open()
adoStream.Type = 1
adoStream.LoadFromFile(strFuldeSti)
Response.BinaryWrite adoStream.Read()
adoStream.Close
Set adoStream = Nothing

Response.End

End Sub
%>

'============= SLUT ==============


Hvis der er en, der ligger inde med de vise sten, vil det glæde mig meget




mvh.
//Andreas



 
 
Erik Ginnerskov (01-09-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 01-09-05 21:52

//Andreas wrote:
> Hej
>
> Jeg har lavet et lille administrations-modul til måske 500
> tekst-sider. Her har jeg så lavet en liste over alle tekst-siderne
> vha. paging - hver side bliver delt op med 75 linier på hver. Hver
> linie (post) har et ikon for "Slet", "Rediger" og "Tilknyt" - og
> disse ikoner fylder ikke mere end 1kb/stk., men eftersom billederne
> ikke bliver cachet, skal der for tre ikoner på hver linie hentes 225
> ikoner pr. side - og det er for langsomt. I nedderste venstre hjørne
> af IE står der f.eks. "mangler 225 elementer" - gaaab.

Er det da ikke de samme tre billeder, du bruger på alle linjer? Hvis det er,
skal der da kun hentes tre billeder, hvorefter de genbruges fra cache.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://html-faq.dk/



//Andreas (02-09-2005)
Kommentar
Fra : //Andreas


Dato : 02-09-05 07:22

Erik Ginnerskov wrote:

> Er det da ikke de samme tre billeder, du bruger på alle linjer? Hvis det
> er,
> skal der da kun hentes tre billeder, hvorefter de genbruges fra cache.

Jo, det har du ganske ret i, det er de samme tre små ikoner - men af en
eller anden mærkelig grund læser div. browsere bare ikke siderne fra cachen,
men bruger tid på at indlæse dem alle igen og igen og igen og igen og....
Hvis jeg bare som alm. html henter billederne som <img src="filnavn.jpg">
går det galt. Derfor forsøgte jeg med "cache-koden" fra min første mail, men
det hjalp heller ikke.


mvh.
//Andreas



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste