FastCGI Cache preloaden
FastCGI Cache is snel en efficiënt, maar heeft één beperking: gecachte content wordt pas gegenereerd nadat een echte bezoeker een pagina opvraagt — en verloopt na ongeveer een uur. Dat betekent dat de eerste bezoeker van een verse pagina nooit profiteert van de cache.
Met een cache warm-up los je dit op door vooraf periodiek de URL's van je site op te vragen, zodat de gecachte versie al klaarstaat voordat een echte bezoeker arriveert.
Stap 1 — Maak het preload-script aan
- Ga in de Bestandsbeheerder naar
public_html/en maak een nieuw bestand aan met de naampreload.php. - Plak de onderstaande code in het bestand.
- Pas de
$sitemapUrlaan zodat deze verwijst naar de daadwerkelijke sitemap-URL van je site.
<?php
$sitemapUrl = 'https://jouwdomein.nl/sitemap.xml';
// Sitemap ophalen via cURL (omzeilt allow_url_fopen-beperkingen)
$ch = curl_init($sitemapUrl);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_USERAGENT => 'Sitemap-Warmer-Bot'
]);
$xmlContent = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode !== 200) {
die("Error: Could not fetch sitemap. HTTP Code: $httpCode");
}
// XML parsen
$xml = simplexml_load_string($xmlContent);
if (!$xml) {
die("Error: Failed to parse XML. Is the sitemap valid?");
}
// Namespaces afhandelen (de 'white screen'-fix)
$ns = $xml->getDocNamespaces();
$xml->registerXPathNamespace('s', $ns[''] ?? 'http://www.sitemaps.org/schemas/sitemap/0.9');
$urls = $xml->xpath('//s:url');
if (empty($urls)) {
die("Error: No URLs found in sitemap. Check the XML structure.");
}
// Cache opwarmen
foreach ($urls as $url) {
$loc = (string) $url->loc;
$chWarmer = curl_init($loc);
curl_setopt_array($chWarmer, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_USERAGENT => 'Nginx-FastCGI-Cache-Warmer',
]);
curl_exec($chWarmer);
$status = curl_getinfo($chWarmer, CURLINFO_HTTP_CODE);
echo date('H:i:s') . " [$status] Processing: $loc<br>";
usleep(100000);
}
echo "Done!";Stap 2 — Plan het script als cron job
Maak in Ontwikkelaarstools een nieuwe cron job aan met de onderstaande opdracht. Vervang de UUID door de mapnaam van je website (in dit voorbeeld: 5e43c690-1937-47aa-9ff5-e1c2d7daebb7):
/usr/bin/php /var/www/5e43c690-1937-47aa-9ff5-e1c2d7daebb7/public_html/preload.php > /dev/null 2>&1Je UUID vinden
Weet je niet zeker wat de UUID van je website is?
- Ga naar de Bestandsbeheerder.
- Klik met de rechtermuisknop op een willekeurig bestand en kies Info bekijken.
- Kopieer de UUID uit het locatiepad van het bestand.
Stap 3 — Controleer of het werkt
Open het script direct in je browser via https://jouwdomein.nl/preload.php. Loopt het script door je sitemap-URL's heen en eindigt het met Done!? Dan werkt het opwarmen van de cache zoals verwacht.
