FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Mycket flitig postare
|
Hej,
Jag håller på att utveckla en quiz-sida där det kommer finns ca 120 slumpvis valda frågor, varje fråga har en text på ca 7000 tecken! ja du läste rätt 7000 tecken! dvs att en omgång innehåller ca 840,000 tecken! Från början använde jag sessioner för att spara denna data, vilket inte fungerade så där jätte bra hos Loopia, då de körde med lastbalansering, och ibland händer det att sessionen tas bort och då crashar allt. sedan tog jag en annan approch och sparade sessionsID i databasen så ifall session skulle förloras så kunde man hämta hem session via datasen. Problemet här är ju att jag måste för varje fråga uppdatera databasen, och att session även håller reda på vilka frågor användaren har besvarat. alternativ 2 funkar ju, inget problem direkt... dock känns det lite onödig med 1 anrop mot databasen för varje nu fråga. finns det smartare alternativ? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Flitig postare
|
7k tecken är med UTF8 maximalt 27kb, vilket är väldigt lite data att hämta om databas ligger på samma server. Se till att spara informationen i rätt columntyp bara, te.x barracuda row format.
Annars är en cacheserver likt redis eller memcached ett bra alternativ. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Vad är det du vill lagra?
1. Är det alla frågorna som existerar? 2. Eller är det ett state på hur många av dessa 120 frågorna som personen svarat rätt på, alternativt har kvar att svara på? om 1; som 2 säger så är det bara att lagra texten i databas. En rad per fråga. om 2; Du behöver ju inte spara information såsom texten på frågan utan bara något id som pekar emot frågan och huruvida det har svarats rätt svar eller inte. Detta kan du spara i databasen med ett id där du lagrar ditt ID i en session (eller cookie). |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Har WN som tidsfördriv
|
Totalt kommer hela omgången att ta upp 820.3kB vilket inte är något som helst problem att lagra i Local Storage vilket jag rekommenderar för ditt ändamål. När frågorna är besvarade verifierar du så att innehåller i din Local Storage är korrekt och uppdaterar DB.
Senast redigerad av jayzee den 2016-01-13 klockan 19:04 |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Administratör
|
Frågorna bör du väl ändå spara i din databas. Och eftersom du säger att du lottar ut 120 frågor antar jag att du redan gör det?
Behöver du sedan lotta ut en omgång med frågor så sparar du en referens (id) för frågan i en session, samt eventuell information knuten till omgången (svaren på frågor, tidfrist?, starttid? osv). Kör man samma kod över flera servrar med någon form av lastbalansering kan man inte spara session-datan i fil, om man inte mountat en nätverksdisk för ändamålet. Isåfall löser man det enklast (men inte alltid bäst) med att spara sessions i databasen man använder för övriga funktioner. Detta kan ändras lätt i alla vettiga språk eller ramverk för webben. Men att duplicera frågorna som lottats ut förstår jag verkligen inte varför du vill göra...
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
Svara |
|
|