Avatar billede pelskee Nybegynder
26. juli 2007 - 09:22 Der er 18 kommentarer og
1 løsning

Bloker browser cache

folk klager over at de på denne side ikke kan klikke på mere end 1 collection. Dvs når de har set 1 collection - klikker Back og klikker på en ny collection så får de ikke vist de rigtige billeder

http://www.andyrouse.co.uk/collections.asp
Avatar billede pelskee Nybegynder
26. juli 2007 - 09:57 #1
jeg har prøvet dette men det virker ikke. http://www.htmlgoodies.com/beyond/reference/article.php/3472881
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 10:04 #2
Og det er vel det under "ASP Pages Use This" du har prøvet, ikke?
Avatar billede pelskee Nybegynder
26. juli 2007 - 10:28 #3
ja. jeg har smidt følgende i head både oppe og nede:
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

på specifik siden kalder en flash film som henter et xml dokument, det virker som om at det er genereringen af dette dokument der kniber.

min specifik side start sådan:
<body>
<iframe src="make_xml.asp?IDcollection=<%=rsSpecific("IDcollection")%>" height="0" width="0" frameborder="0"></iframe>
...

skal jeg smide indholdet af min make_xml.asp op?
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 10:45 #4
De 3 linier skal kun stå i toppen, een gang.

De står vel også i make_xml.asp
Avatar billede pelskee Nybegynder
26. juli 2007 - 11:35 #5
ja det gør de.

make_xml.asp

<!--#include file="Connections/database.asp"-->
<%
Function write_to_file(filnavn, txt, write_mode)
    If write_mode = "overwrite" Then
        write_mode = 2
    Else
        write_mode = 8
    End if
    set fs = createobject("scripting.filesystemobject")
    If Not fs.fileExists(filnavn) Then
        fs.CreateTextFile filnavn, True
    End if
    Set fil = fs.OpenTextFile(filnavn, write_mode)
        fil.Write txt
        fil.close   
    set fil = nothing
    set fs = nothing
End function

Function cleanData(tmpTxt)
    If Len(tmpTxt) > 0 Then
        tmpTxt = fjernhtml(tmpTxt, "(<[^><]*>)", " ")
        tmpTxt = Replace(tmpTxt,"&","&#38;")
        tmpTxt = Replace(tmpTxt,"æ","&#230;")
        tmpTxt = Replace(tmpTxt,"Æ","&#198;")
        tmpTxt = Replace(tmpTxt,"ø","&#248;")
        tmpTxt = Replace(tmpTxt,"Ø","&#216;")
        tmpTxt = Replace(tmpTxt,"å","&#229;")
        tmpTxt = Replace(tmpTxt,"Å","&#197;")
    End if
    cleanData = tmpTxt
End Function

Function fjernhtml(tekst,patrn, replStr)
    Set regEx = New RegExp
    regEx.Pattern = patrn
    regEx.global = true
    regEx.IgnoreCase = True
    fjernhtml = regEx.Replace(tekst, replStr)
End Function

ud = "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf & vbcrlf & "<settings>" & vbcrlf & vbtab & "<time_slide>2</time_slide>" & vbcrlf & vbtab & "<author>Andy Rouse</author>" & vbcrlf
set conn = server.createobject("adodb.connection")
conn.Open MM_database_STRING

'hent collection info
sql = "SELECT * FROM collection WHERE IDcollection = " & Request.QueryString("IDcollection")
Set rs = conn.execute(sql)

    collectionTitle    = rs("Title")
    collectionText    = rs("Text")
    ud = ud & vbtab & "<name>" & cleanData(collectionTitle) & "</name>" & vbcrlf
    ud = ud & vbtab & "<text_slideshow>Loading XML...</text_slideshow>" & vbcrlf
    ud = ud & "</settings>" & vbcrlf & vbcrlf

'hent emner
sql = "SELECT * FROM collection_image WHERE collectionID = " & Request.QueryString("IDcollection") & " ORDER BY IDcollectionimage DESC"
Set rs = conn.execute(sql)

ud = ud & "<main>" & vbcrlf
While Not rs.eof

    filename = rs("Filename")
    Filtype = right(filename, 4)
    filename = left(filename, (len(filename)-4))
    ud = ud & tabs & vbtab & "<pic big=""" & cleanData(filename) & Filtype & """ picsmall=""" & cleanData(filename) & "_small" & Filtype & """ text=""""/>" & vbcrlf

    rs.movenext
wend
    ud = ud & "</main>" & vbcrlf

If rs.state <> 0 Then
    rs.close
    Set rs = nothing
End if

write_to_file server.mappath("xml/settings.xml"), ud, "overwrite"
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 11:55 #6
Du overskriver den samme fil hver gang ???

(Og er det iøvrigt helt lovligt XML...)
Avatar billede pelskee Nybegynder
26. juli 2007 - 13:45 #7
ja jeg overskriver den hver gang. så er der ikke mere at holde styr på.
jeg vil gerne generere ovenstående xml hver gang brugeren kalder siden men det er som om det ikke sker med mindre browser history i IE er sat til at hente siden hver gang og ikke cache den
Avatar billede olebole Juniormester
26. juli 2007 - 14:13 #8
<ole>

Du kan gøre query-strengen unik. Evt. ved at smide et timestamp i enden - efter:
    ?IDcollection=<%=rsSpecific("IDcollection")%>

- så tror browseren hele tiden, der er tale om et nyt XML-dokument og vil ikke hente fra cachen  ;o)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 14:35 #9
"Du overskriver den samme fil hver gang ??? "  - jamen, er der ikke flere brugere, der kan være i gang på samme tid?  Så kan det jo ske man ikke får den man klikkede på, hvis en anden bruger også er i gang.... Det holder vel ikke i længden.

Ja, IE kan være en PITA med den indstilling der cacher altid. Prøv Oles først.

Jeg kan nu ikke se de 3 "ikke-cache" linier i din make_xml.asp
Avatar billede pelskee Nybegynder
26. juli 2007 - 17:11 #10
er det sådan du mener Ole ?

<iframe src="make_xml.asp?IDcollection=<%=Request.QueryString("IDcollection")%>&Timestamp=<%=Now()%>" height="0" width="0" frameborder="0"></iframe>
Avatar billede pelskee Nybegynder
26. juli 2007 - 17:13 #11
i det øjeblik xml er genereret trækkes det ind i flash og bruges derefter ikke. derfor tror jeg ikke (håber ikke :) jeg kommer ud i det problem du beskriver Erik

har prøvet med de 3 linier i min make_xml.asp men det virkede ikke så nu er de væk igen
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 17:17 #12
Så er det nok ikke et cache-problem. Måske det alligevel er den der fil...  Og selv om du be'r og trygler din server om ikke at komme i en fler-bruger-konflikt, så kommer du det selvfølgelig på et tidspunkt. Det er en eklatant dårlig løsning.
Avatar billede pelskee Nybegynder
26. juli 2007 - 17:33 #13
hvordan bør det gøres?
Avatar billede erikjacobsen Ekspert
26. juli 2007 - 17:40 #14
Det kan jeg ikke gennemskue ud fra hvad du skriver. Måske
1) Lave en .xml fil pr IDCollection
2) Lave xml-koden direkte i kaldet fra Flash, som skal have parameteren med
3) ...noget helt fjerde...
Avatar billede pelskee Nybegynder
27. juli 2007 - 10:42 #15
okay.
tak for hjælpen.
skal vi ikke dele point 50/50 mlm ole og erik
Avatar billede erikjacobsen Ekspert
27. juli 2007 - 11:10 #16
Jeg samler slet ikke på point, tak.
Avatar billede pelskee Nybegynder
10. august 2007 - 10:12 #17
erik - skal jeg så ikke smide den alle efter dig :)
Avatar billede olebole Juniormester
10. august 2007 - 22:06 #18
Hvis du mener Ole, så ellers tak ... ikke for det bette timestamp. Lav koden om, som Erik siger - og læg så selv et svar og accepter det  ;o)
Avatar billede pelskee Nybegynder
11. august 2007 - 10:35 #19
jeg endte med at generere en seperat XML fil for hver collection når brugeren opretter den. så ændrede jeg flash filen så den trækker et ID med ind når den skal finde den tilsvarende XML fil. det spiller nu :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester