dim fso, folder, path, file, js
path="bilder/_orginal/" & rsKatalog & "/"
js=""
set fso = Server.CreateObject("Scripting.FileSystemObject")
set folder = fso.GetFolder(Server.MapPath(path))
for each file in folder.Files
file=replace(file,"\","/")
file=mid(file,instrrev(file,"/")+1)
if lcase(right(file,3))="jpg" or lcase(right(file,3))="gif" or lcase(right(file,3))="png" or lcase(right(file,4))="jpeg" then
if len(js&"")>0 then js=js&","
js=js&""""&file&""""
end if
next
%>
<script type="text/javascript">
var a=new Array(<%=js%> ); var imgs=new Array();
for(var i=0;i<a.length;i++){
imgs[i]=new Image; imgs[i].src="<%="bilder/_orginal/" & rsKatalog & "/"%>"+a[i];
}
</script>
och tänkte klistra ihop dessa till en, men det verkar inte gå bra. Och jag lyckades destuom inte felsöka något alls, hur borde det se ut egentligen?
och fråga två:
om jag lyckats med det ovan, så ska bilderna nu ligga i cashminnet (för de ligger väl inte i internminnet?). Måste jag nu använda samma arrays på samma sida för att webläsaren ska fatta att bilden redan är inladdad, eller är den så smart så den gör det automagiskt?
tack tack, det funkade fint. Nu är det så att jag visar inte bilderna direkt utan meningen är att alla ska laddas ner, och sen när man klickar på en länk så ska bilderna visas, då snabbt utan att laddas in. måste man då använda samma arrays för att läsaren ska fatta att den redan har laddat ner bilderna?
och jag får lågt virtuellt minne när jag laddar ner många bilder... är det säkert att bilderna lagras i chashen och inte i internminnet?
i och med att den funktionen skapar nya image objekt för samtliga bilder samtidigt kommer minnesförbrukningen bli väldigt hög om du har för många bilder. Jag skulle råda dig att istället begränsa den till att först ladda upp 5 bilder, sen allt eftersom de blir färdiga anropa en funktion för att ta bort den förra bilden och påbörja en ny hämtning. Bilderna cachas som vanligt, men just DOM objekt är på detta sätt rätt krävande.. Speciellt på Mac läsare.
tack tack, det funkade fint. Nu är det så att jag visar inte bilderna direkt utan meningen är att alla ska laddas ner, och sen när man klickar på en länk så ska bilderna visas, då snabbt utan att laddas in. måste man då använda samma arrays för att läsaren ska fatta att den redan har laddat ner bilderna?
Nej, det behöver du inte, eftersom cachningen endast ser på url:en Vill du få ett (marginellt) snabbare beteende måste du använda de Image-objekt som skriptet skapar och stoppa in dem i HTML-trädet.
Calevan skrev:
och jag får lågt virtuellt minne när jag laddar ner många bilder... är det säkert att bilderna lagras i chashen och inte i internminnet?
Hur cache-mekanismen fungerar har man egentligen ingen kontroll över (dvs. till viss del utnyttjas internminnet, oavsett man vill det eller inte), men nackdelen med preload-scripten är att de skapar Image-objekt (som lagras i internminnet) som sedan aldrig utnyttjas. I princip dubblar man minnesåtgången med preloaden.
En variant skulle kunna vara att återanvända ett och samma Image-objekt för alla bilder, men då måste man se till att inte sätta om src-attributet förrän föregående bild laddats klart (triggar ett onload-event som kan vara användbart).
tack båda två! det förklarar varför datorn blir så seg, ska fundera på hur jag kan göra det istället. En funktion som inte körs förrän bilden innan är färdigladdad, det låter något det, hur kan man tänkas skapa en sådan? onloadfinished, hmm.
Testade koden som du föreslog emission men det allokerade minnet ökade ändå explsionsartat och därmed även växlingsfilen, dvs datorn blev seg.
Desutom så verkar det inte som preloadingen fungerar som jag tänkt. även de preloade bilderna tar lite tid innan de kommer fram. ni kan ju testa (om ni vågar :) ) att gå till denna sidan och klicka på helskärmsläge:
Meningen var att man skulle kunna pröva att se om det blir skillnad när man förladdat bilderna och när man inte har gjort det. Klarar din dator att förladda bilderna utan att bli tokseg? Exakt hur koden ser ut antar jag att du ser i källkoden.
jag tror att jag återavnänder bildobjektet, jag hoppas det, men är inte helt säker... ska jag posta all kod här?
Koden har jag inte tittat på, då jag räknar med att jag inte förstår den!
Tittade i visa.asp, vänsterframen, och där stoppar du bilderna i en array.
Men, är det inte endast småbilderna?
I vilket fall finns det inget att anmärka på, det fungerar som man kan vänta sig, eller kanske något bättre, när en stor bild ska visas.
i visa.asp är det, som du säger, småbilderna som laddas in i en array. Därför gör jag en ny array på bildspel.asp (den sidan du kommer till när du klickar på helskärmsläge). För mig fungerar det ingen vidare att förladda bilderna, så jag drar igång bildspelet direkt istället. Vad menar du med att det fungerar som väntat eller lite bättre? De låter onekligen bra, men exakt vad menar du?
När du skrivitom stora bilder, har jag trott att du klickade på den stora bilden till höger. Eftersom din vänsterframe såg lite konstig ut nu, klickade jag på Helskärmsläge, och se där, det är säkert DEN du talat om.
Den fungerar däremot dåligt, där ser man hur den laddar tunga bilder.
Har man för kort bildspelstid kommer inte bilden fram. Testade med 30 sek, men fungerade inte ändå.
Eftersom den stora bilden som jag tittat på tidigare är en direktlänkad jpg-fil, fick jag inte ihop hur du förladdat den bilden.
Därför skrev jag också att det fungerade bra.
ah, det förklarar saken! ber om ursäkt att jag varit otydlig i min beskrivning.
Jag får fram bilderna fint på 10 sekunder, men datorn hänger sig ganska mycket om man väljer att förladda bilderna där. Du får gärna testa att göra det (finns en länk i löptexten på helskärmsläget) och berätta om det går eller inte.
(kontrollerna ser inte helt korrekt ut grafiskt just nu, har inte hunnit fixa det ännu)
Jag får fram bilderna fint på 10 sekunder, men datorn hänger sig ganska mycket om man väljer att förladda bilderna där. Du får gärna testa att göra det (finns en länk i löptexten på helskärmsläget) och berätta om det går eller inte.
Nä? Jag har endast start/stopp och "Stäng bildspel", ingen löptext alls.
Jag har alltså klickat på Helskärmsläge i vänsterframen, då öppnar sig en helsvart sida med menyn gömd till vänster.