Jag vet att det finns en mängd trådar angående cachning av sidor, men jag kunde inte hitta någon med riktigt samma problem som jag.
Jag brukar cacha sidor som är lite tyngre att ladda med "Response.Expires = 45". Men om jag cachar en sida som är unik för den inloggade användaren så kommer ju nästa användare som loggar in från samma dator inom 45 minuter att få den förre användarens cachade sida. Går detta att lösa, eller ska man cacha en sådan sida på ett annat sätt?
Användarens ID i adressen? Nej, det rekommenderar jag verkligen inte, såvida du inte har hård kontroll på att det ID't verkligen tillhör rätt person. Annars kan man ju bara mata in vilket ID som helst.
Om du verkligen måste cache'a saker, gör det isf i Application t.ex.;
function getCacheObject(sName, sKey)
If Len(Application("CacheObject" & sName & sKey & "Expires")) Then
If Not DateDiff("n", Now, Application("CacheObject" & sName & sKey & "Expires")) > 0 Then
getCacheObject = Application("CacheObject" & sName & sKey & "Data")
End If
End If
end function
sub setCacheObject(sName, sKey, lTTLMin, sData)
Application("CacheObject" & sName & sKey & "Data") = sData
Application("CacheObject" & sName & sKey & "Expires") = DateAdd("n", lTTL, Now)
end function
Sen kan du bygga HTML och fösa in om du vill;
sB = getCacheObject("datatable", "userid" & session("UserId"))
If Not Len(sB) Then
Set rs = conn.Execute("SELECT ... bla bla")
sB = "<table>"
While not rs.eof
sB = sB & "<tr><td>" & rs("DataField") & "</td></tr>"
rs.movenext
wend
sB = sB & "</table>"
setCacheObject "datatable", "userid" & session("UserId"), 15, sB
set rs = nothing
End If
Response.Write sB
Den här koden är helt otestad, jag skrev den precis. :r
/Red. Buggfix. :l
137 ms totalt · 3 externa anrop · v20260731065814-full.55e59744