Bijna iedereen zegt het al, maar ga voor fysieke files. Het edit aspect is het grootste dillema waar je mee zit. Een van de web projecten waar ik op zat draaide helemaal door in dingen in de DB zetten. Zelfs de SQL queries stonden in de DB, zodat je dus eerst een query moest doen om je query op te halen die je dan kon executen
Het editten is dus zeer problematisch. Als we alleen kijken naar template files dan zie je dat daar zeer goede editors voor zijn. JSP syntax highlighting, error checking terwijl je types, automatisch neerzetten van imports boven aan je pagina als je code completion gebruikt etc etc. Alle editors die dit kunnen verwachten een file. Het gaat hier dan om de meest profesionele editors. Als templates in DB stoppen een serieuze optie was dan hadden deze editors hier toch wel support voor gehad?
Tevens gaan heel veel dingen niet goed meer als templates uit de DB moeten komen. Stel dat je een simpele <jsp:include> tag op je pagina zet. Hoe ga je die code dan wijsmaken dat de te includen pagina uit de DB moet komen? Zelfde met redirect actions in servlets (JSF/ Struts, etc). Die zou je allemaal moeten gaan aanpassen om requests te resolven naar een DB toe. Lijkt me onbegonnen werk.
Een ander groot probleem met templates in de DB is
versie controlle. Als je file based werkt kun je via CVS, SVN etc precies zien wie wat en wanneer veranderd heeft en eventueel snel een oud stukje terughalen. Als je je templates in de DB stopt werkt dit ook al niet meer.
Nog een andere probleem is dat je in verreweg de meeste situaties 1 centrale DB hebt, maar meerdere web applicatie bakken hebt staan. Met file bases templates heb je automatisch op deze manier al een hele basale vorm van clustering (namelijk, elke bak laadt en cached z'n eigen files). M.a.w. de scalability met file based in veel groter.
Zoals ook al gezegd, kwa access moet je content die niet van buitenaf beschikbaar mag zijn gewoon buiten je webroot houden. De WEB-INF directory is daarvoor de standaard plek.
Nadelen zijn dus editing, lib support, versie controlle en scalability. Voordelen zijn niet bestaand. De conclusie lijkt me daardoor heel erg voor de hand liggend.
It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.