Det betyder vel bare at du skal gemme XML'en, f.eks. som en fil eller i en application-variabel, lokalt i mindst 120 sekunder inden du forespørger den igen fra den eksterne server.
Du kan f.eks. lægge den i application således:
dim ts, doUpdate
' tag udgangspunkt i at cachen ikke skal opdateres
doUpdate = false
' hent timestamp for sidste opdatering af cachen
ts = application("wbcxml_timestamp")
' undersøg om cachen skal opdateres
if iempty(ts) then
' ts er slet ikke sat endnu, så derfor skal data hentes 1. gang
doUpdate = true
elseif not isdate(ts) then
' ts er ikke en dato
doUpdate = true
elseif datediff("s", cdate(ts), now) > 120 then
' der er gået mere end 120 sekunder siden sidste opdatering
doUpdate = true
end if
' foretag evt. opdatering, alternativt aflæsning, af cachen
if doUpdate then
' hent XML'en fra den eksterne kilde og opdater cachen...
strURL = "
http://" & strLand & ".worldsbiggestchat.com/onlinestatxml.aspx"
set xmlDoc = createObject("MSXML2.FreeThreadedDOMDocument.6.0")
xmlDoc.async = false
xmlDoc.setProperty "ServerHTTPRequest", true
on error resume next
call xmlDoc.load(strURL)
set application("wbcxml") = xmlDoc
application("wbcxml_timestamp") = now
else
' hent xml-struturen fra cachen
set xmlDoc = application("wbcxml")
end if
' benyt det aktuelle xmlDoc
strOnline = xmlDoc.documentElement.childNodes(1).text
arrOnline = Split(strOnline," ")
NB: Der benyttes FreeThreadedDOMDocument, da application ikke accepterer singlethreaded eller apartement threaded objekter...
Det er meget muligt du bare kan nøjes med at gemme værdien i strOnline, men ikke desto mindre kan teknikken omkring caching stadig bruges.