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