Avatar billede boomshanka Nybegynder
30. maj 2008 - 15:03 Der er 7 kommentarer og
1 løsning

Hvad er best practice når man cacher data objekter?

Hej eksperter,

Jeg har en række data objekter som jeg gerne vil cache, men jeg er lidt i tvivl om hvordan man kan gøre det smartest. Som jeg ser det kan man vælge mellem 2 alternativer:

1. Sætte en udløbsdato for sin cache (absolut eller slide)
2. Bevare cachen for evigt og opdatere den efter behov.

Med første alternativ får man et problem hvis datakilden ikke er tilgængelig. I det øjeblik man forsøger at hente data vil cache objektet være udløbet og man vil ikke have noget data at falde tilbage på.

Det problem kan man løse ved at bruge 2. alternativ. Så opdaterer man kun hvis det nye data objekt er valid og indeholder data. Problemet her er bare, at cachen skal opdateres periodevis uafhængigt af websitet (f.eks én gang i døgnet), og det er ikke altid ligetil når man ikke selv hoster websitet.

Hvad er best practice når man vil bruge cache? Findes der et par gode artikler om emnet som ikke bare forklarer hvordan man konkret anvender en bestemt implementering af cache? På forhånd tak!
Avatar billede erikjacobsen Ekspert
30. maj 2008 - 15:08 #1
Punkt 2 kræver vel også en tilgængelig datakilde, da du aldrig ved hvornår webserveren eller din applikation genstarter.

Men ellers er du den, der kan vælge, for du må kende de kriterier der skal danne grundlag for vurderingen (og som du ikke skriver noget om her).
Avatar billede boomshanka Nybegynder
30. maj 2008 - 15:41 #2
Du har ret erikjacobsen - jeg fik vist ikke formuleret den rigtigt :-) Jeg mente ikke at datakilden ikke ville være tilgængelig, men at man kunne få ikke-valid data tilbage (eksempelvis en DataTable med 0 rækker).

Helt konkret parser jeg noget data fra et website (desværre ingen webservice), så udover at websitet kan brage ned er sandsynligheden for at data ændrer sig ret høj. Derfor ville jeg også gerne have et dataobjekt at kunne falde tilbage på hvis der opstår en fejl i parsing af data.
Avatar billede erikjacobsen Ekspert
30. maj 2008 - 15:45 #3
Så kan du hente det fra webstedet, og tilføje en række i en tabel i din database. Du viser den nyeste, og du putter kun noget i, hvis det ser ud til at gå godt.

Caching kan du så overveje, hvis du har en flaskehals, som caching vil kunne løse.
Avatar billede erikjacobsen Ekspert
30. maj 2008 - 15:46 #4
...og du kan hente det fra webstedet automatisk med et cronjob (el.lign)
Avatar billede boomshanka Nybegynder
30. maj 2008 - 15:59 #5
ok, det ryger i databasen så. Det er vist også det nemmeste...

Jeg tror ikke webhotellet tillader cronjob - findes der et andet alternativ?
Avatar billede boomshanka Nybegynder
30. maj 2008 - 16:03 #6
aha...så lige du havde en anden post med samme emne. Jeg lægger et cronjob hos en udbyder som tillader det.

Smid et svar så får du dine point :-)
Avatar billede erikjacobsen Ekspert
30. maj 2008 - 18:39 #7
Jeg samler slet ikke på point, tak. Du svarer blot selv, og accepterer dit eget svar.

Jah, man kan jo undvære at kunne lave cronjobs (eller hvad det hedder på Windows), men der er da efterhånden en del udbydere, der tillader det.
Avatar billede boomshanka Nybegynder
13. august 2008 - 00:55 #8
.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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