Hur mycket information kan man ha i en session()? Eller ligger begränsningen enbart på hårdvaran? Berätta vad du tänkt lagra och varför så kan vi ge dig tips och råd på alternativa sätt at lösa ditt problem. Det är ett antal poster som man kan söka fram. Lagra bara ID nummrena i "kundvagnen" /sessions variabeln. Hämta övrig information först när användaren begär den. Jo det var det jag tänkte göra. Du skall bara lagra det du håller i kundvagnen i så fall. Att lagra en massa produkter och liknande i en session blir helt fel tänk. Tänk på att sessionerna oftast dör efter 20 minuter så alla som handlar och avbryter ligger och skvalpar en bra stund. SÅ hitta istället en annan variant - det går så fort på servern nu att du behöver inte hålla sånt cachat och i minne. Jag antar att du lagrar värdet som ett tal, inte en sträng, så det blir inte 9 tecken, utan 4 byte. Däremot så är alla variabler i VBScript av typen Variant, och de tar upp 12 byte. JAg vill se den besökare men en kundvagna på 30 tusen artiklar. Tror denna kund komer var uppskattad besökare på de websahopar denna besöker. Jag lagrar inte alla "artiklar" som finns, i sessions-variablen, bara dom som "kunden" har valt att lägga till där. Då kan du tillämpa första exemplet. Då jag vill vara utförlig ger jag även ett exempel på en "riktig kundvagn". Då detta inlöägg kan komma upp vid sökningar i forumet på kundvagn. Jag vill ge läsaren av denna tråd kvalitet.Storlek på en session()
Är t.ex. 30,000 tecken för mycket?
/DSv: Storlek på en session()
Sv: Storlek på en session()
Varje post har ett id (5-9 siffror).
Vid varje post så ska det finnas en knapp för att lägga till posten i nån slags kundvagn.
Kundvagnen laddar man sen hem med all post-information som semikolonavgränsad.
Lite osäker på hur många poster det kan handla om, men säkert en 3000 st.Sv: Storlek på en session()
Sv: Storlek på en session()
Men om då id-numret är på 9 siffror, och man har 3000 "artiklar" så blir det ju 27,000 tecken. Plus eventuella avgränsningar, så ca 30,000 då kanske.Sv: Storlek på en session()
Sv: Storlek på en session()
3000 * 12 = 36000 byte
Har du tänkt att lagra alla artiklar som finns i sessionsvariabeln? Varför?Sv: Storlek på en session()
Som Guffa säger bör du lagra det som tal i en array. Exempel för att lägga en vara i en array:
<code>
Dim Size
Dim Cart
Dim ProductId
'**
'* Lagrar artikelnummret i variabel
'**
ProductId = Trim(Request.Form("ProductId"))
'**
'* Kontrollerar om det är ett tal
'**
If IsNumeric(ProductId) Then
'**
'* Omvandlar text till tal
'**
ProductId = CLng(ProductId)
'**
'* Hämtar kundvagnen
'**
Size = Session("Size")
Cart = Session("Cart")
'**
'* Kontrollerar om kundvagnen är tom
'**
If Size Then
'**
'* Skapar en ny plats i kundvagnen
'**
Size = Size + 1
Redim Preserve Cart(1 to Size)
Else
'**
'* Skapar en kundvagn
'**
Size = 1
Redim Cart(1 to Size)
End If
'**
'* Sparar varan i kundvagnen
'**
Cart(Size) = ProductId
'**
'* Sparar kundvagnen till sessions variabeln
'**
Session("Cart") = Cart
Session("Size") = Size
End If
</code>
Det är ju lämplig at oxå lagra antal. Detta kan göras med antingen en tvådimensionel array eller en endimensionel array för varje värde. Eftersom endimensionella arrayer är snabbare, tar mindre plats rekomenderar jag dem:
<code>
Dim Size
Dim Index
Dim Found
Dim Counts
Dim Products
Dim ProductId
Dim ProductCount
'**
'* Lagrar värden i variabel
'**
ProductId = Trim(Request.Form("ProductId"))
ProductCount = Trim(Request.Form("ProductCount"))
'**
'* Kontrollerar om det är ett tal
'**
If IsNumeric(ProductId) And IsNumeric(ProductCount) Then
'**
'* Omvandlar text till tal
'**
ProductId = CLng(ProductId)
ProductCount = CLng(ProductCount)
'**
'* Hämtar kundvagnen
'**
Size = CLng(Session("Size"))
Counts = Session("Counts")
Products = Session("Products")
'**
'* Kontrollerar om kundvagnen är tom
'**
If Size Then
'**
'* Kontrollerar om varan finns i kundvagnen
'**
For Index = 1 to Size
If Products(Index) = ProductId Then
Found = True
Exit For
End If
Next
If Found Then
'**
'* Uppdaterar antalet
'**
Counts(Index) = Counts(Index) + ProductCount
Else
'**
'* Skapar en ny plats i kundvagnen
'**
Size = Size + 1
Redim Preserve Counts(1 to Size)
Redim Preserve Products(1 to Size)
'**
'* Sparar varan i kundvagnen
'**
Counts(Size) = ProductId
Products(Size) = ProductCount
Else
'**
'* Skapar en kundvagn
'**
Size = 1
Redim Counts(1 to Size)
Redim Products(1 to Size)
'**
'* Sparar varan i kundvagnen
'**
Counts(Size) = ProductId
Products(Size) = ProductCount
End If
'**
'* Sparar kundvagnen till sessions variabeln
'**
Session("Size") = Size
Session("Counts") = Counts
Session("Products") = Products
End If
</code>Sv: Storlek på en session()
Och man kan inte lägga till en å samma "artikel" flera ggr, alltså bara 1 st antal av varje.
Värt att nämna är att det här är inte nånting som besökarna beställer, utan dom lägger till dessa i sin "kundvagn" för att sen ladda hem information (gratis). Och efter ett visst urval från sitt abbonemang(stavningen?) så kan det bli några tusen "artiklar" som kunden kan lägga till i sin nerladdnings-lista.
Det finns t.ex. en knapp för att lägga till alla nya "artiklar" för denna vecka, så kan man gå till föregående vecka och lägga till alla därifrån också. För att tillslut trycka på en knapp och ladda hem allt som man valt...Sv: Storlek på en session()
Det framkommer inte om du nu fått svar på din fråga och kan fortsätta på egenhand. Om detta är fallet bör du markera tråden som löst.
Annars kan du ställa följdfråga.