Eerst even een korte inleiding: Als webdeveloper zijnde maak ik gebruik van een eigen gebouwd CMS, gebaseerd op PHP en een MySQL backend. Dit CMS heeft onder andere een volledig modulaire opzet waarbij het toevoegen van een functie niet meer is dan de feature lijst ophalen vanaf een centrale server, aanklikken wat je wilt, waarna de centrale server de taak van uploaden van language, template en code op zich neemt. Op zich werkt dit perfect, maar ik heb binnen mijn hoofd last van een aantal theoretische barrières en dingen die mogelijk beter kunnen. Daarbij ben ik dus bij het volgende idee gekomen, ondersteunt door potentieel veel vrije tijd, groei in gebruikers en dus deployments, ed.
Opzet
Mijn idee is om een volledige httpd op te zetten (en waarschijnlijk voor gedeeltes te forken vanaf projecten als lighttpd, etc.) waarbij de httpd op zich de code voor de websites in zich neemt. Ik denk namelijk dat er een hoop te winnen valt qua caching, acces times en protocol overhead.
Praktisch
Door het gebruik van 1 (threaded) httpd die ook alle code bevat voor de verschillende modules van de site wou ik de read times verminderen. Omdat het binnen 1 proces zou gaan draaien kan ik de templates en dergelijke direct in het geheugen laden en daar houden tot ze gewijzigd zouden gaan worden. Hierdoor heeft de server alles binnen een minimale tijd beschikbaar en hoeft dat niet voor elk request nog steeds in zich. Mijn (misschien foute) redenatie is namelijk dat voor elk request vaak de zelfde dingen steeds weer opnieuw opgehaald moeten worden.
Content caching
Door dingen als statistieken, sessie-data, statische pagina's, etc. in het geheugen te houden, maar ook als backup weg te schrijven naar danwel de MySQL server danwel de disk zelf, dacht ik ook hier een hoop winst op kunnen te behalen. Ook zou ik een tot enkele database connecties in stand kunnen houden waardoor er niet steeds een (naar mijn hoofd's theorie) connectie opgebouwd hoeft te worden.
Nu zijn eigenlijk de vraagstukken waar ik nog mee zit:
- Is dit uberhaupt een zinnige oplossingen
- Zijn de (enkele) aangedragen wel een probleem of is dat compleet verwaarloosbaar
- Is het verantwoord voor een middelmatige (in low level talen) coder om zoiets te maken en is de gedachte dat ik zoiets in the end efficiënter kan maken dan apache wel realistisch?
De rest van de praktische opzet wil ik nog verder uitwerken maar het leek me handig om misschien alvast wat input te krijgen.
Opzet
Mijn idee is om een volledige httpd op te zetten (en waarschijnlijk voor gedeeltes te forken vanaf projecten als lighttpd, etc.) waarbij de httpd op zich de code voor de websites in zich neemt. Ik denk namelijk dat er een hoop te winnen valt qua caching, acces times en protocol overhead.
Praktisch
Door het gebruik van 1 (threaded) httpd die ook alle code bevat voor de verschillende modules van de site wou ik de read times verminderen. Omdat het binnen 1 proces zou gaan draaien kan ik de templates en dergelijke direct in het geheugen laden en daar houden tot ze gewijzigd zouden gaan worden. Hierdoor heeft de server alles binnen een minimale tijd beschikbaar en hoeft dat niet voor elk request nog steeds in zich. Mijn (misschien foute) redenatie is namelijk dat voor elk request vaak de zelfde dingen steeds weer opnieuw opgehaald moeten worden.
Content caching
Door dingen als statistieken, sessie-data, statische pagina's, etc. in het geheugen te houden, maar ook als backup weg te schrijven naar danwel de MySQL server danwel de disk zelf, dacht ik ook hier een hoop winst op kunnen te behalen. Ook zou ik een tot enkele database connecties in stand kunnen houden waardoor er niet steeds een (naar mijn hoofd's theorie) connectie opgebouwd hoeft te worden.
Nu zijn eigenlijk de vraagstukken waar ik nog mee zit:
- Is dit uberhaupt een zinnige oplossingen
- Zijn de (enkele) aangedragen wel een probleem of is dat compleet verwaarloosbaar
- Is het verantwoord voor een middelmatige (in low level talen) coder om zoiets te maken en is de gedachte dat ik zoiets in the end efficiënter kan maken dan apache wel realistisch?
De rest van de praktische opzet wil ik nog verder uitwerken maar het leek me handig om misschien alvast wat input te krijgen.