Jeg mener hermed ikke, at vi skal droppe databasen i ethvert WYSIWYG tool - hvad jeg mener er, at når vi som indholds redaktører gemmer en side i toolet, så gemmes både en version i databasen til nem tilgang når vi retter, men samtidig gemmes en version på disken, som vores webapplikation henter fremfor at hente i databasen. Vores database laver således intet når brugeren henter siden, og arbejder kun når redaktøren retter siden.
Ved at lade redaktørens version være i databasen, tillader vi søgninger i indholdet, som pga den formindskede load på serveren kan laves "tungere" / mere avanceret - smart ik ?
Hvad udviklere ofte glemmer er, at man kan gemme disse "cachede" filer som PHP filer, og dermed stadig have dynamisk indhold på siderne eller andre database kald - ved at bruge include til at inkludere den cachede fil, eksekveres filen inden den vises, således at enhver PHP kode i filen eksekveres
Nok snak, hermed et kodeeksempel der giver tre funktioner, loadCache, saveCache og deleteCache - navnene burde være ret sigende. Jeg bruger personligt ikke loadCache da den ikke eksekverer indhold fremfor en simpel include, men jeg har den i mit "bibliotek" for god ordens skyld.
function loadCache($dir, $file) {
if (!is_readable($dir.$file)) {
return false;
exit;
} else {
$buffer = '';
$fd = fopen ($dir.$file, "r");
while (!feof($fd)) $buffer .= fgets($fd);
fclose ($fd);
}
return $buffer;
}
function saveCache($dir, $file, $cache, $backupdir='') {
# 0x1 : File cached
# 0x2 : Directory doesnt exist
# 0x4 : Directory not writable
# 0x8 : Backup directory doesnt exist
# 0x10 : Backup directory not writable
if (!is_dir($dir)) $status += 0x2;
else if (!is_writable($dir)) $status += 0x4;
else {
$cachefile = $dir.$file;
$backupfile = $backupdir.$file;
if ($backupdir && file_exists($cachefile)) {
if (!is_dir($backupdir)) $status += 0x8;
else if (!is_writable($backupdir)) $status += 0x10;
else {
if (file_exists($backupfile)) unlink($backupfile);
rename($cachefile, $backupfile);
}
}
$fp = fopen($cachefile, 'w');
fputs($fp, $cache);
fclose($fp);
$status += 0x1;
}
return $status;
}
function deleteCache($dir, $file) {
if (file_exists($dir.$file)) unlink($dir.$file);
return true;
}
?>
Mere information om brugen af bit værdier til rapportering af fejlkoder : http://www.eksperten.dk/ (...)


