{"id":15906,"date":"2025-12-08T18:23:46","date_gmt":"2025-12-08T17:23:46","guid":{"rendered":"https:\/\/webhosting.de\/php-opcache-konfiguration-performance-optimierung-cacheboost\/"},"modified":"2025-12-08T18:23:46","modified_gmt":"2025-12-08T17:23:46","slug":"php-opcache-configuratie-prestatieoptimalisatie-cacheboost","status":"publish","type":"post","link":"https:\/\/webhosting.de\/nl\/php-opcache-konfiguration-performance-optimierung-cacheboost\/","title":{"rendered":"PHP OPcache uitgebreid uitgelegd: zo haalt u het maximale uit uw cache"},"content":{"rendered":"<p>PHP OPcache versnelt mijn scripts omdat PHP de gecompileerde <strong>bytecode<\/strong> in het geheugen bewaart en zo opnieuw parseren overbodig maakt. In deze handleiding laat ik zien hoe ik OPcache <strong>configureren<\/strong>, monitor en stem ik alles nauwkeurig af, zodat uw applicatie meetbaar sneller reageert en piekbelastingen moeiteloos opvangt.<\/p>\n\n<h2>Centrale punten<\/h2>\n\n<ul>\n  <li><strong>Bytecode-cache<\/strong> verlaagt CPU-belasting en I\/O<\/li>\n  <li><strong>Parameters<\/strong> hoe memory_consumption en max_accelerated_files gericht te kiezen<\/li>\n  <li><strong>Omgeving<\/strong> gedifferentieerd instellen: Dev, Staging, Productie<\/li>\n  <li><strong>Controle<\/strong> gebruiken voor hitrate, bezetting, evictions<\/li>\n  <li><strong>Inzet<\/strong> en cache-flush netjes integreren<\/li>\n<\/ul>\n\n<h2>Zo werkt OPcache: bytecode in plaats van hercompileren<\/h2>\n\n<p>Bij elke aanvraag leest PHP normaal gesproken bestanden in, parseert de code en maakt <strong>bytecode<\/strong>, die door de Zend Engine wordt uitgevoerd. OPcache komt hier precies om de hoek kijken en slaat deze bytecode op in het gedeelde geheugen, zodat volgende verzoeken direct vanuit het geheugen kunnen worden gestart. Hierdoor nemen de CPU-cycli en bestandsaccessen af, wat de responstijden aanzienlijk verkort. In typische opstellingen bereik ik hiermee winst tussen 30 en 70 procent, afhankelijk van de codebasis en het verkeersprofiel. Het is van cruciaal belang dat de cache groot genoeg blijft en dat de belangrijkste scripts permanent in het <strong>Geheugen<\/strong> blijven.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php-opcache-workspace-7164.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>OPcache controleren en activeren op Linux, Windows en shared hosting<\/h2>\n\n<p>Ik begin altijd met een blik in phpinfo() en zoek naar \u201eZend\". <strong>OPcache<\/strong>\u201c en sleutels zoals opcache.enable of opcache.memory_consumption. Onder Linux activeer ik de module via het pakket php-opcache en een opcache.ini in de conf.d-map. Onder Windows volstaat een vermelding zend_extension=opcache in php.ini en een herstart van de webserver. Bij shared hosting schakel ik OPcache vaak in via een door de gebruiker gedefinieerde php.ini of via het klantenmenu. Bij knelpunten controleer ik bovendien de <a href=\"https:\/\/webhosting.de\/nl\/php-geheugenlimiet-verhogen-voorkom-fouten-performant\/\">PHP-geheugenlimiet verhogen<\/a>, zodat OPcache en PHP-FPM voldoende <strong>Bronnen<\/strong> ontvangen.<\/p>\n\n<h2>De belangrijkste schakelaars duidelijk uitgelegd<\/h2>\n\n<p>Met opcache.enable activeer ik de cache voor webverzoeken, terwijl opcache.enable_cli het gebruik voor CLI-taken regelt, wat de moeite waard is bij worker-queues. De kern wordt gevormd door opcache.memory_consumption, dat het beschikbare gedeelde geheugen in megabytes aangeeft; een te krappe inschatting leidt tot evictions en hernieuwde <strong>Compilaties<\/strong>. opcache.max_accelerated_files definieert hoeveel bestanden er in de cache mogen terechtkomen; deze waarde moet het aantal bestanden van het project ruimschoots overschrijden. Met opcache.validate_timestamps en opcache.revalidate_freq bepaal ik hoe streng OPcache wijzigingen in bestanden controleert, van zeer dynamisch (ontwikkeling) tot zeer spaarzaam (productie met handmatige flush). Ik beveilig opmerkingen met opcache.save_comments=1, omdat veel tools op <strong>DocBlocks<\/strong> afhankelijk zijn.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php_opcache_meeting_7093.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Startwaarden en profielen in vergelijking<\/h2>\n\n<p>Voor een soepele start zet ik in op duidelijke profielen voor ontwikkeling, staging en productie. Zo krijg ik enerzijds snelle feedbackcycli bij het coderen en anderzijds betrouwbare prestaties in live-gebruik. Het blijft belangrijk dat u deze startwaarden regelmatig controleert aan de hand van echte statistieken en bijstelt. Bij grotere WordPress-installaties plan ik ruimschoots opslagruimte en vermeldingen in, omdat plug-ins en thema's veel <strong>Bestanden<\/strong> genereren. De volgende tabel geeft een overzicht van zinvolle startwaarden, die ik vervolgens op basis van hitrate en evictions nauwkeurig afstel.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Instelling<\/th>\n      <th>Ontwikkeling<\/th>\n      <th>Staging\/test<\/th>\n      <th>Productie<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>opcache.enable<\/td>\n      <td>1<\/td>\n      <td>1<\/td>\n      <td>1<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.enable_cli<\/td>\n      <td>0<\/td>\n      <td>0\u20131<\/td>\n      <td>1 (bij CLI-taken)<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.geheugen_verbruik<\/td>\n      <td>128\u2013256 MB<\/td>\n      <td>256\u2013512 MB<\/td>\n      <td>256\u2013512+ MB<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.interned_strings_buffer<\/td>\n      <td>16\u201332 MB<\/td>\n      <td>32\u201364 MB<\/td>\n      <td>16\u201364 MB<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.max_versnelde_bestanden<\/td>\n      <td>8.000\u201310.000<\/td>\n      <td>10.000\u201320.000<\/td>\n      <td>10.000\u201320.000+<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.validate_timestamps<\/td>\n      <td>1<\/td>\n      <td>1<\/td>\n      <td>0\u20131 (afhankelijk van Deploy)<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.revalidate_freq<\/td>\n      <td>0\u20132 s<\/td>\n      <td>60\u2013300 s<\/td>\n      <td>300+ s of 0 (met handmatige controle)<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.save_comments<\/td>\n      <td>1<\/td>\n      <td>1<\/td>\n      <td>1<\/td>\n    <\/tr>\n    <tr>\n      <td>opcache.fast_shutdown<\/td>\n      <td>1<\/td>\n      <td>1<\/td>\n      <td>1<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Deze matrix is bewust pragmatisch, omdat echte projecten heel verschillend groeien. Ik begin met deze waarden en observeer vervolgens de hitrate, het gebruikte aandeel in het gedeelde geheugen en het optreden van evictions. Bij tekenen van druk verhoog ik eerst opcache.memory_consumption in gematigde stappen. Daarna pas ik opcache.max_accelerated_files aan totdat het aantal bestanden comfortabel past. Zo blijft de <strong>Cache<\/strong> effectief en aanvragen blijven gelijkmatig vlot.<\/p>\n\n<h2>Instellingen per omgeving: ontwikkeling, staging, productie<\/h2>\n\n<p>Bij de ontwikkeling is snelle feedback op codewijzigingen belangrijk, daarom stel ik validate_timestamps=1 en revalidate_freq zeer laag of zelfs op 0 in. Bij staging controleer ik de realistische belasting en stel ik het geheugen ruim in, zodat de resultaten dicht bij de latere live-werking liggen. In de productie verhoog ik de testfrequentie of schakel ik tijdstempels helemaal uit als mijn implementatie de cache daarna gericht leegmaakt. Voor CLI-gebaseerde workers activeer ik enable_cli=1, zodat terugkerende taken ook door de <strong>Bytecode-cache<\/strong> profiteren. Zo genereert elke omgeving precies het gedrag dat ik nodig heb, zonder verrassingen bij reactietijden.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php-opcache-visualisierung-cache-9281.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Geavanceerde instellingen die vaak het verschil maken<\/h2>\n\n<p>Naast de basisparameters zijn er schakelaars waarmee ik de stabiliteit en veiligheid kan verhogen en bijwerkingen kan minimaliseren:<\/p>\n\n<ul>\n  <li>opcache.max_wasted_percentage: Bepaalt vanaf welk fragmentatieniveau OPcache een interne herstructurering van het geheugen in gang zet. Bij sterk wisselende codebases verlaag ik de waarde iets om minder \u201eversnipperd\u201c geheugen te hebben.<\/li>\n  <li>opcache.force_restart_timeout: tijdsduur in seconden waarna OPcache een geforceerde herstart uitvoert als een herstart nodig is, maar er nog processen actief zijn. Dit voorkomt zeer lange onzekere situaties.<\/li>\n  <li>opcache.file_update_protection: beschermingsvenster in seconden waarin recent gewijzigde bestanden niet onmiddellijk worden gecachet. Dit helpt tegen half geschreven bestanden tijdens implementaties of op netwerkschijven.<\/li>\n  <li>opcache.restrict_api: Beperkt welke scripts opcache_reset() en statusfuncties mogen aanroepen. In productie stel ik dit strikt in, zodat alleen administratieve eindpunten toegang hebben.<\/li>\n  <li>opcache.blacklist_filename: bestand waarin ik patronen bijhoud die worden uitgesloten van de cache (bijv. zeer dynamische generators). Dit bespaart ruimte voor meer kritieke scripts.<\/li>\n  <li>opcache.validate_permission en opcache.validate_root: actief wanneer er meerdere gebruikers\/chroots in het spel zijn. Zo voorkomt PHP dat gecachete code uit de ene context ongeoorloofd wordt gebruikt in een andere context.<\/li>\n  <li>opcache.use_cwd en opcache.revalidate_path: controleert hoe OPcache scripts identificeert wanneer paden via verschillende werkdirectory's\/symlinks worden ge\u00efntegreerd. Bij release-symlinks test ik deze waarden specifiek om dubbele caches te voorkomen.<\/li>\n  <li>opcache.cache_id: Als meerdere virtuele hosts dezelfde SHM delen (zeldzaam), scheid ik de caches netjes via een unieke ID.<\/li>\n  <li>opcache.optimization_level: Ik laat dit meestal op standaard staan. Alleen bij debugging-edgecases verminder ik tijdelijk de optimalisatiepasses.<\/li>\n<\/ul>\n\n<h2>Preloading: delen van de code permanent in het geheugen bewaren<\/h2>\n\n<p>Met PHP 7.4+ kan ik via opcache.preload en opcache.preload_user centrale framework- of projectbestanden laden en koppelen bij het opstarten van de server. Het voordeel: klassen zijn beschikbaar zonder autoload-hits en hot paths zijn direct beschikbaar. Een paar praktische regels:<\/p>\n\n<ul>\n  <li>Preloading is vooral de moeite waard bij grote, stabiele codebases (bijv. Symfony, eigen kernbibliotheken). Bij WordPress gebruik ik het met mate, omdat Core\/Plugins vaker worden bijgewerkt.<\/li>\n  <li>Een preload-bestand bevat gerichte opcache_compile_file()-aanroepen of integreert een autoloader die gedefinieerde klassen <em>van tevoren<\/em> laadt.<\/li>\n  <li>Elke codewijziging aan preload-relevante bestanden vereist een herstart van PHP-FPM, zodat de preload opnieuw wordt opgebouwd. Ik integreer dit in implementaties.<\/li>\n  <li>Ik meet het effect apart: niet elke code profiteert hiervan; preloading verbruikt extra gedeeld geheugen.<\/li>\n<\/ul>\n\n<h2>JIT en OPcache: voordelen, beperkingen, geheugenvereisten<\/h2>\n\n<p>Sinds PHP 8 bestaat de Just-In-Time-Compiler (JIT), die via OPcache wordt aangestuurd (opcache.jit, opcache.jit_buffer_size). Voor typische webworkloads met I\/O- en databasebelasting levert JIT vaak weinig op. Bij code die veel CPU-belasting vereist (bijv. beeld-\/gegevensverwerking) kan het merkbaar helpen. Ik ga als volgt te werk:<\/p>\n\n<ul>\n  <li>Ik activeer JIT conservatief en meet statistieken van echte gebruikers en CPU-profielen. Blind activeren vergroot de geheugenbehoefte en kan edgecases veroorzaken.<\/li>\n  <li>Ik dimensionneer de JIT-buffer afhankelijk van CPU-intensieve routes. Te kleine buffers bieden geen meerwaarde, te grote buffers verdringen bytecode.<\/li>\n  <li>Als de hitrate of SHM-bezetting eronder lijdt, geef ik OPcache voorrang boven JIT. Bytecode-cache is voor de meeste sites de belangrijkste hefboom.<\/li>\n<\/ul>\n\n<h2>Bestandspaden, symlinks en veilige implementatiestrategie\u00ebn<\/h2>\n\n<p>OPcache is padgebaseerd. Daarom leg ik de nadruk op de implementatiestrategie:<\/p>\n\n<ul>\n  <li>Atomic Releases via symlink (bijv. \/releases\/123 -&gt; \/current): netjes, maar let op opcache.use_cwd en realpath-gedrag. Ik vermijd dubbele caches door ervoor te zorgen dat alle workers consistent hetzelfde echte pad zien.<\/li>\n  <li>Met validate_timestamps=0 moet de cache <em>overal<\/em> worden geleegd: na het omschakelen flush ik OPcache gericht op alle hosts\/pods en rol ik PHP-FPM gecontroleerd opnieuw uit.<\/li>\n  <li>Ik stem realpath_cache_size en realpath_cache_ttl af op OPcache, zodat bestandslookups snel en stabiel blijven.<\/li>\n  <li>Op netwerkschijven (NFS\/SMB) verhoog ik file_update_protection en ontwerp ik implementaties zodanig dat bestanden atomair worden vervangen.<\/li>\n<\/ul>\n\n<p>Voor zeer snelle herstarts gebruik ik vaak een tweestapsprocedure: eerst opwarmen op de achtergrond, daarna een korte, geco\u00f6rdineerde herlaadbeurt van alle workers, zodat het eerste liveverkeer al een warme cache aantreft.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php-opcache-workspace-5931.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Bestandcache, opwarmen en priming<\/h2>\n\n<p>Naast het gedeelde geheugen kan OPcache bytecode optioneel naar de schijf schrijven (opcache.file_cache). Dit helpt in speciale scenario's:<\/p>\n\n<ul>\n  <li>In containeromgevingen kan een bestandscache <em>tussen<\/em> FPM-herstarts Verkort de recompilatietijden, mits de opslag snel is.<\/li>\n  <li>Ik gebruik opcache.file_cache voorzichtig: op trage of gedistribueerde bestandssystemen levert het weinig op en verhoogt het de complexiteit.<\/li>\n  <li>opcache.file_cache_only is een speciaal geval voor omgevingen zonder SHM \u2013 niet gebruikelijk voor prestatiegerichte opstellingen.<\/li>\n<\/ul>\n\n<p>Voor warming-ups maak ik kleine \u201eprimers\u201c:<\/p>\n\n<ul>\n  <li>Een CLI-script roept opcache_compile_file() aan voor hot files, bijvoorbeeld autoloaders, centrale frameworkklassen, grote helpers.<\/li>\n  <li>Een crawler bezoekt de belangrijkste routes (startpagina, login, checkout) zodat de bytecode en de downstream-caches op tijd warm zijn.<\/li>\n  <li>Ik plan de opwarmingen zo dat ze kort voor het overschakelen van de versie klaar zijn.<\/li>\n<\/ul>\n\n<h2>OPcache in de stack: PHP-FPM, objectcache en paginacache<\/h2>\n\n<p>OPcache laat vooral zijn kracht zien in combinatie met PHP-FPM, een nette procesconfiguratie en extra cache-lagen. Bij WordPress combineer ik het met een objectcache (zoals Redis) en een paginacache, zodat de database en rendering worden ontlast. Daarbij let ik op de <a href=\"https:\/\/webhosting.de\/nl\/php-single-thread-prestaties-wordpress-hosting-snelheid\/\">Single-thread-prestaties<\/a>, omdat PHP-verzoeken sterk afhankelijk zijn van afzonderlijke CPU-kernen. Als er toch druk ontstaat, verdeel ik de belasting over PHP-FPM-workers, zonder het gedeelde geheugen van OPcache te klein te kiezen. Zo gebruik ik de <strong>Stapel<\/strong> volledig, in plaats van alleen aan \u00e9\u00e9n stelschroef te draaien.<\/p>\n\n<h2>Frequente fouten en snelle controles<\/h2>\n\n<p>Een te kleine cache leidt tot evictions, die ik kan herkennen in de OPcache-status of phpinfo(). Als dat gebeurt, verhoog ik stapsgewijs opcache.memory_consumption en controleer ik het effect via de hitrate. Als bestanden niet sneller worden, stel ik opcache.max_accelerated_files hoger in dan de werkelijke hoeveelheid bestanden in het project. Bij implementatieproblemen controleer ik validate_timestamps: met 0 blijft oude bytecode actief totdat ik de cache expliciet leegmaak. Tools zoals Doctrine vereisen DocBlocks, daarom laat ik save_comments=1 staan om <strong>Fout<\/strong> door het ontbreken van annotaties te vermijden.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php_opcache_nachtarbeit_4382.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>OPcache controleren en interpreteren<\/h2>\n\n<p>Ik meet de hitrate en streef naar waarden die dicht bij 100 procent liggen, zodat verzoeken bijna altijd vanuit de cache worden gestart. Daarnaast houd ik het geheugengebruik en het aantal evictions in de gaten om knelpunten vroegtijdig te herkennen. Met opcache_get_status() maak ik kleine dashboards of voer ik bestaande monitoringoplossingen in. Zo zie ik veranderingen na releases of plugin-updates direct in de trend. Met deze statistieken neem ik weloverwogen beslissingen. <strong>Beslissingen<\/strong> en pas alleen aan wat echt nodig is.<\/p>\n\n<p>Concrete richtlijnen die hun waarde hebben bewezen:<\/p>\n\n<ul>\n  <li>Hitrate &gt; 99 % onder normale en piekbelasting; daaronder controleer ik de bestandsverdeling en warm-up.<\/li>\n  <li>Vrij SHM-aandeel constant &gt; 5\u201310 %; anders schaal ik het geheugen.<\/li>\n  <li>Evictions in de loop van de tijd: eenmalige pieken na implementatie zijn ok\u00e9; voortdurende evictions duiden op onderdimensionering of sterke fragmentatie.<\/li>\n  <li>Wasted Memory in de gaten houden: als het de limiet bereikt, plan ik een gecontroleerde OPcache-herbouw (bijvoorbeeld tijdens onderhoudsvensters).<\/li>\n<\/ul>\n\n<h2>Voorbeeld: WordPress-installatie met veel verkeer<\/h2>\n\n<p>Voor grote WordPress-websites kies ik opcache.enable=1 en opcache.enable_cli=1, zodat ook CLI-workers hiervan profiteren. Ik stel het gedeelde geheugen graag in op 384 MB of hoger als er veel plug-ins en een thema met veel functies bij betrokken zijn. Ik verhoog opcache.interned_strings_buffer naar 64 MB, omdat veel klasse- en functienamen in alle verzoeken terugkomen. Voor extreem performante omgevingen stel ik validate_timestamps=0 en revalidate_freq=0 in, maar flush ik de cache direct na elke release. Het blijft belangrijk om implementaties zo te ontwerpen dat er geen oude <strong>bytecode<\/strong> in omloop blijft.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php_opcache_schreibtisch_4827.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Praktische workflow voor tuning en implementaties<\/h2>\n\n<p>Ik werk in vaste cycli: meten, wijzigen, controleren. Eerst beveilig ik statuswaarden zoals hitrate, bezetting en evictions, daarna pas ik een parameter aan en meet ik opnieuw. Voorafgaand aan een release wis ik bij gedeactiveerde tijdstempels gericht de OPcache, hetzij via een herstart van PHP-FPM, hetzij via een klein script. Vervolgens controleer ik piekbelastingen met echt verkeer of representatieve benchmarks. Als er opvallend gedrag optreedt, controleer ik ook <a href=\"https:\/\/webhosting.de\/nl\/geheugenfragmentatie-webhosting-php-mysql-optimalisatie-byteflow\/\">Geheugenfragmentatie<\/a>, omdat ze de bruikbare <strong>Gedeelde<\/strong> Het geheugen vermindert.<\/p>\n\n<p>Een paar extra routines die hun nut hebben bewezen in teams:<\/p>\n\n<ul>\n  <li>Versiebeheer voor parameterwijzigingen: opcache.ini in de repo, wijzigingen via pull request en changelog.<\/li>\n  <li>Canary-implementaties: eerst laadt slechts een deel van de workers\/pods nieuwe versies en bouwt een cache op, daarna volgt de uitrol naar alle instanties.<\/li>\n  <li>Noodschakelaar: een intern admin-eindpunt met beveiligde toegang dat opcache_reset() en gerichte opcache_invalidate()-aanroepen toestaat \u2013 in combinatie met opcache.restrict_api.<\/li>\n  <li>Grootte schatten: Als vuistregel reken ik in eerste instantie 1-2 MB OPcache per 100-200 PHP-bestanden en pas ik dit vervolgens aan op basis van de werkelijke statistieken. Voor WordPress met veel plug-ins voeg ik een buffer toe.<\/li>\n<\/ul>\n\n<h2>Kort samengevat<\/h2>\n\n<p>OPcache versnelt PHP-toepassingen door de gecompileerde <strong>bytecode<\/strong> in het RAM-geheugen opslaat. Met de juiste instellingen voor geheugen, aantal bestanden en tijdstempelstrategie bereikt u constant korte responstijden. Zorg ervoor dat u afstemt met PHP-FPM en andere cache-lagen, zodat de hele stack goed samenwerkt. Controleer de hitrate, bezetting en evictions, zodat u gerichte aanpassingen kunt doen. Zo bent u verzekerd van een krachtige, betrouwbare <strong>Platform<\/strong> voor hoge belasting en groei.<\/p>","protected":false},"excerpt":{"rendered":"<p>Leer hoe u PHP OPcache correct configureert en de prestaties van uw applicaties aanzienlijk verbetert met gerichte php opcache-tuning.<\/p>","protected":false},"author":1,"featured_media":15899,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-15906","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"2621","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"PHP OPcache","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"15899","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/posts\/15906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/comments?post=15906"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/posts\/15906\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/media\/15899"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/media?parent=15906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/categories?post=15906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/tags?post=15906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}