Tutorials
Server Side Caching (SSC)
Handig voor sites met meer dan 10000 pageviews per dag!
Pagina 1
Inleiding
Server Side Caching (SSC) is een heel handig middel om ervoor te zorgen dat je site sneller zal laden. Dit omdat je hierdoor minder query's zal afvuren richting database.
SSC is vooral bedoeld voor sites met bijv laatse 10 toegevoegde posts of laatste 10 wijzigen in profielen nou ja noem maar op. (net als hier rechts op deze site)
LET OP met SSC versnel je je site alleen als er 10000en records in je database staan zoals op deze site ook het geval. Anders is data uit je database halen sneller dan deze methode.
Het principe:
laatste wijzigingen als variabelen opslaan in een php-bestandje en deze includen in al je pagina's voor het gewenste resultaat.
SSC is vooral bedoeld voor sites met bijv laatse 10 toegevoegde posts of laatste 10 wijzigen in profielen nou ja noem maar op. (net als hier rechts op deze site)
LET OP met SSC versnel je je site alleen als er 10000en records in je database staan zoals op deze site ook het geval. Anders is data uit je database halen sneller dan deze methode.
Het principe:
laatste wijzigingen als variabelen opslaan in een php-bestandje en deze includen in al je pagina's voor het gewenste resultaat.
Pagina 2
Uitleg adv een voorbeeld
Aanname:
je hebt net zon site als deze een forum waar alleen al 10000 topics in het database staan. Hierbij zijn er totaal ook nog eens 100000 reacties: je hebt in totaal dus 110000 records in je database!
Om alle laatste 10 wijzigen te laten zien kun je dus op elke pagina een SELECT query uitvoeren die dan de gewenste resultaten weergeeft. Echter kun je je voorstellen dat als je site een beetje goed draait (20000 pageviews/dag) dat er per minuut wel veel query's moeten worden uitgevoerd en dat dit de boel aanzienlijk vertraagd.
Aan de hand van 20000 pageviews per dag kun je hieruit berekennen dat er gemiddeld zon 28 query's per minuut worden uitgevoerd (uitgaande dat je site 12 uur per dag heel actief is). Er worden dus 28 queries uitgevoerd op je server naast de query's die je al uitvoert als bezoekers-aantal bijhouden, data ophalen van elk topic enz.
Het gaat ff om de 28 query's per minuut die je uitvoert om van een bepaald onderwerp de laatste 10 weer te geven.
Om deze 28 te veranderen in 1 of 2 per minuut, voor weergave van de laatste 10, kun je dus gebruik maken van SSC.
Het principe van SSC is dat je alleen de SELECT query uitvoert nadat een gebruiker een topic, een reactie (nou ja alles waar je de laatste 10 van kan bijhouden) heeft uitgevoerd. De resultaten uit zon query sla je vervolgens op in een php-bestandje (txt-bestandje zou ook kunnen) en dit belangrijke bestandje include je vervolgens in je pagina's waar je de laatste 10 wilt tonen.
je hebt net zon site als deze een forum waar alleen al 10000 topics in het database staan. Hierbij zijn er totaal ook nog eens 100000 reacties: je hebt in totaal dus 110000 records in je database!
Om alle laatste 10 wijzigen te laten zien kun je dus op elke pagina een SELECT query uitvoeren die dan de gewenste resultaten weergeeft. Echter kun je je voorstellen dat als je site een beetje goed draait (20000 pageviews/dag) dat er per minuut wel veel query's moeten worden uitgevoerd en dat dit de boel aanzienlijk vertraagd.
Aan de hand van 20000 pageviews per dag kun je hieruit berekennen dat er gemiddeld zon 28 query's per minuut worden uitgevoerd (uitgaande dat je site 12 uur per dag heel actief is). Er worden dus 28 queries uitgevoerd op je server naast de query's die je al uitvoert als bezoekers-aantal bijhouden, data ophalen van elk topic enz.
Het gaat ff om de 28 query's per minuut die je uitvoert om van een bepaald onderwerp de laatste 10 weer te geven.
Om deze 28 te veranderen in 1 of 2 per minuut, voor weergave van de laatste 10, kun je dus gebruik maken van SSC.
Het principe van SSC is dat je alleen de SELECT query uitvoert nadat een gebruiker een topic, een reactie (nou ja alles waar je de laatste 10 van kan bijhouden) heeft uitgevoerd. De resultaten uit zon query sla je vervolgens op in een php-bestandje (txt-bestandje zou ook kunnen) en dit belangrijke bestandje include je vervolgens in je pagina's waar je de laatste 10 wilt tonen.
Pagina 3
Het echte werk
Eerst de query waarmee je de laatste 10 wijzigen uit je database haalt geordend op datum wat dat is lijkt me wat je wilt:
updatequery.php:
<?
$db = mysql_connect("localhost","","");
mysql_select_db("naamdatabass")
or die ("FOUT: Gegevens kunnen niet worden opgehaald!");
$sql= "SELECT * FROM tabelnaam ORDER BY tijd DESC LIMIT 0,10";
$result = mysql_query($sql) or die(mysql_error());
//ik neem aan dat je zon query wel snapt en kan uitvoeren.
while ($row = mysql_fetch_array($result))//resultaten in while loop weergeven
{
$titel10[] = $row[titel];//titel van een topic de resultaten sla ik op in een array titel10[]
}
//nu het echte van het echte werk :P
$output ='<?';//ik sla het altijd op als php bestand....
for ($i=0; $i < count($titel10); $i++)//resultaten tellen en alle stoppen in $ouput
{
$output.=' $titel['.$i.'] = "'.$titel10[$i].'";';//
}
$output.='?>';
//$ouput zal er als volgt uitzien voor 2 resultaten:
//<? $titel[0] = "titel 1"; $titel[1] = "titel 2"; ?>
//nu de variabele wegschrijven naar een php-bestand genaamd updates.php
$file = fopen("updates.php", "w");
fputs($file, $output);
fclose($file);
?>
zo dat waren dus de laatste 10 resultaten als variabelen wegscrijven naar updates.php je begrijpt wel dat wanneer je deze include in een pagina ook de array titel[] wordt geinclude....
in je script van je parent zou er bijvoorbeeld dit kunnen staan:
jesite.php
<?
include 'updates.php';
//en om de array te tonen gebruik je wederom een for loopje:
for ($i=0; $i < count($titel); $i++)
{
echo $titel[$i];
}
?>
en als laatste moet je het bestand updatequery.php includen op de juiste plek: namelijk nadat iemand iets heeft toegevoegd. zodat ook meteen alle variabelen worden vervangen. ik hoop dat dit te begrijpen is.
NOTE: ik heb als voorbeeld alleen de titel meegenomen in de variabelen, maar om er ook meteen een link van te kunnen maken moet je dus ook het id en categorie meeschrijven naar updates.php. Dit gaat natuurlijk op de zelfde manier als de titel.
ik hoop dat het duidelijk is en hiermee zal je site een stukje sneller draaien zeg nou zelf een php bestandje van max 10 variabelen includen of steeds maar zoeken in je database van minimaal 110000 records!!
updatequery.php:
<?
$db = mysql_connect("localhost","","");
mysql_select_db("naamdatabass")
or die ("FOUT: Gegevens kunnen niet worden opgehaald!");
$sql= "SELECT * FROM tabelnaam ORDER BY tijd DESC LIMIT 0,10";
$result = mysql_query($sql) or die(mysql_error());
//ik neem aan dat je zon query wel snapt en kan uitvoeren.
while ($row = mysql_fetch_array($result))//resultaten in while loop weergeven
{
$titel10[] = $row[titel];//titel van een topic de resultaten sla ik op in een array titel10[]
}
//nu het echte van het echte werk :P
$output ='<?';//ik sla het altijd op als php bestand....
for ($i=0; $i < count($titel10); $i++)//resultaten tellen en alle stoppen in $ouput
{
$output.=' $titel['.$i.'] = "'.$titel10[$i].'";';//
}
$output.='?>';
//$ouput zal er als volgt uitzien voor 2 resultaten:
//<? $titel[0] = "titel 1"; $titel[1] = "titel 2"; ?>
//nu de variabele wegschrijven naar een php-bestand genaamd updates.php
$file = fopen("updates.php", "w");
fputs($file, $output);
fclose($file);
?>
zo dat waren dus de laatste 10 resultaten als variabelen wegscrijven naar updates.php je begrijpt wel dat wanneer je deze include in een pagina ook de array titel[] wordt geinclude....
in je script van je parent zou er bijvoorbeeld dit kunnen staan:
jesite.php
<?
include 'updates.php';
//en om de array te tonen gebruik je wederom een for loopje:
for ($i=0; $i < count($titel); $i++)
{
echo $titel[$i];
}
?>
en als laatste moet je het bestand updatequery.php includen op de juiste plek: namelijk nadat iemand iets heeft toegevoegd. zodat ook meteen alle variabelen worden vervangen. ik hoop dat dit te begrijpen is.
NOTE: ik heb als voorbeeld alleen de titel meegenomen in de variabelen, maar om er ook meteen een link van te kunnen maken moet je dus ook het id en categorie meeschrijven naar updates.php. Dit gaat natuurlijk op de zelfde manier als de titel.
ik hoop dat het duidelijk is en hiermee zal je site een stukje sneller draaien zeg nou zelf een php bestandje van max 10 variabelen includen of steeds maar zoeken in je database van minimaal 110000 records!!
Reacties
0