Bekijk Volledige Versie : cachen van php
Beste Allemaal,
ik heb eens zitten kijken naar een cachen van bepaalde content.
Alleen kwam ik niet echt uit op een goede conclusie.
De gene waar ik naar heb zitten kijken zijn de volgende:
php APC
memcache
eAccelerator
Waar mij vooral tegen zat was dat ene snelheid beter was dan de andere.
En dat bepaalde functies in nieuwe versies waren uitgeschakeld.
Die wel weer handig waren.
Hebben jullie toevallig enige lopen of mis ik er nog een paar die misschien ook interresant zijn,
En wat zijn jullie ervaringen ermee.
Welke functies wil je?
Memcache cached trouwens geen php, alleen data.
eAccelerator wordt niet echt geupdate (werkt niet met php 5.4).
Php apc wordt wel ondersteund, al werkt php 5.4 ook nog niet goed.
Ik gebruik xcache. Werkt het snelst en ondersteunt ook php 5.4
Varnish heb ik hier in het forum ook wel eens voorbij zien komen.
https://www.varnish-cache.org
Staat hier nog op de todo om eens mee te testen. Maar is ook meer data volgens mij...
Zo ver ik weet is Varnish geen PHP op-code cacher, maar kan het wel voor PHP worden gebruikt.
Het antwoord op welke de beste is, is niet zo makkelijk. Dit hangt zeer af van welke PHP versie je gebruikt met welke modules.
Zo werkt XCache bijvoorbeeld niet goed met ioncube. Je zal dus eerst moeten opstellen aan welke vereisten de op-code cacher dient te voldoen en wat het belangrijkste is wat je er mee wilt bereiken.
Ramon Fincken
23/04/12, 11:12
je hebt het over content en over PHP, wat wil je nu precies cachen?
systemdeveloper
23/04/12, 13:27
Varnish is een aparte cache server die webcontent cached. Hiermee kun je hele leuke dingen doen, maar het heeft niks met een opcode cache te maken.
Een opcode cache zoals eac. apc etc. werken globaal hetzelfde: scripts omzetten naar opcodes en ergens een tijdje in een bestand of ram opslaan. Afhankelijk van de zillion config parameters en server setup kunnen je alle kanten op dus zou ik zeggen... kies voor het product met de beste support voor je OS.
Om de content (deels) te cachen kun je enerzijds iets als varnish gebruiken (door extern simpelweg cachetijden te manipuleren, handig voor scripts die zelf niet zoveel rekening met caching houden). Voordeel is dat je de code niet hoeft aan te passen.
Anderzijds, kun je caches zoals memcache gebruiken die (al dan niet verdeeld over meerdere servers) ram ter beschikkig stelt aan je script om bv. sql resultaten of static info in op te slaan. Hier voor moet je dan wel je code aanpassen of even goed kijken welke cache opties ondersteunt worden door de plugins van bv. wp, joomla etc.
Dus de 'beste' is gewoon DIE cache die geschikt is voor hetgeen je wilt cachen en die het beste supported is voor je gekozen OS.
Ik zou het niet echt zien als OF, maar eerder EN. Opcode cachen hoeft helemaal niet veel ram te kosten en maken je systeem een stuk sneller. Stukk output of resultaten cachen kan dat nog eens verbeteren.
Ik vind zelf dat als je bijv php op productie draait je sowieso een opcodecacher moet gebruiken. Bij grotere pakket of frameworks scheelt dit enorm. Zeker met een vps (waar IO nogal de bottleneck is) kan je hier makkelijk een factor 3 versnellen.
Sorry voor mijn onduidelijkheid.
De bedoeling was om content te cachen.
In somige gevallen meende ik mij te kunnen herrineren kun je daardoor ook stuk op je mysql load besparen.
Was nu ook aan het orienteren hierop.
Wij gebruiken op onze webservers allemaal centos 6.
En als php extensie nog 5.2 en een aantal 5.3
En als extra modules in apache.
mod_ruid2
Ramon Fincken
24/04/12, 07:40
dat is page cache / varnish
tenzij .. je doelt op losse mysql cache
Varnish werkt inderdaad erg fijn om content te cachen en zodoende sneller te serveren en de backends te ontlasten. Uiteraard kost het wel wat werk om aan beide kanten een zo optimaal mogelijk resultaat te krijgen.
Ik gebruik zelf apc. Werkt erg eenvoudig en met php pagina (apc.php bestand in apc folder even in root map zetten en het werkt) kan je ook nog is zien wat er gebeurt en wat er gecached wordt. Wel zo prettig. Snelheid is ook zeker merkbaar in CMS en SugarCRM e.d.