Visa ett inlägg
Oläst 2010-12-12, 12:13 #7
NeoTech NeoTech är inte uppkopplad
Medlem
 
Reg.datum: Sep 2006
Inlägg: 90
NeoTech NeoTech är inte uppkopplad
Medlem
 
Reg.datum: Sep 2006
Inlägg: 90
Första man ska fråga sig, varför cachar man?
Är det för o bespara I/O tid i databasen? Eller är det för o slippa repetera onödiga loopar?
En sak e väl säker, man cachar statiskt innehåll inte dynamiskt.

Om man e ute efter o bespara I/O tid i Db'n så e väl steg 1, att skriva smartare SQL kod, steg2 är o titta på det statiska datat, vad kan dumpas till filer. Disk I/O e som regel snabbare än SQL I/O vid stora överföringar. - kör man mysql ska man komma ihåg att MySQL belastar servern i dubbel benämning då de inte är en riktig Databas i stil med DB2 standardiseringen som har sina egna filsystem.

Ett sätt o komma runt onödiga CPU belastningar av loopar t.ex är att bryta ner template motorn att hantera ett .NET liknande tänk vad gäller controllers / helpers och kod separerade view filer. Ett bra modulärt ramverk kan ta bort mycket av dom onödiga turerna i en while/foreach loop. För vi ska minnas i webspråk så är det looparna som är CPU tids dödarna.

Om man spolar tillbaka dock lite, att lägga sin affärslogik i databaslagret är ofta en smart lösning, att jobba med procedures, triggers och functions i T-SQL - besparar ofta webbservern mkt processenade, då Databasen alltid är absolut bäst på att hantera stora mängder string data. Samt komplexa mattematiska beräkningar. Att låta databasen serva logik lagret (php) med färdig stringdata kan även det skapa stora vinster i prestanda vad gäller att serva upp statisk information.

Behöver man bara cacha för att sidorna inte uppdateras ofta, då är det bästa troligen o dumpa till html filer och låta filsystemet göra det de är bäst på - serva filer.

Att cacha kan göra mycket fördelar för hårt trafikerade siter, men man ska komma ihåg det finns många sätt o cacha på, dom ger olika fördelar på, och det finns inget som säger att man inte får kombinera flera olika typer av cache funktioner.

Personligen favoriserar jag affärslogik i SQL lagret, med ett MVC ramverk som har total kod/design separering, och när det inte räcker till så stoppar man på en Varnish Caching http proxy server som verkligen kan snabba upp saker o ting. Halvera access tider många ggr.

Vet att detta va inget direkt svar på din initiala fråga, men att bygga ett bra väl fungerande cache system kräver oftast lite mer planering och baktanke, jag tror du nog har bra koll på koden egentligen då du öht överväger att koda en cache hantering. Så då kanske det är procedurerna kring cache hantering och optimeringen av dessa som kan vara bättre o tänka över. =)
NeoTech är inte uppkopplad   Svara med citatSvara med citat