Optimaliseren snelheid - Concrete5 CMS caching instellen

In het Concrete5 CMS wordt het beheer geregeld in dezelfde omgeving als de website staat. Hierdoor wordt bij het regulier instellen van de cache ervoor gezorgd dat ook het admin gedeelte in de cache staat. Om dit op te lossen zijn er twee mogelijkheden:


Beheeromgeving bereikbaar maken via een subdomein

Op deze manier zorg je dat de site vanaf een subdomein ook bereikbaar is, van waaruit de beheerder bewerkingen kan uitvoeren. De caching wordt voor dit subdomein uitgesloten waardoor je hier altijd de laatste weergave mee ziet.

  • Maak een subdomein aan (bijvoorbeeld beheer.domein.nl), en zorg dat deze uit dezelfde map als de hoofdinstallatie uitgelezen wordt (public_html)
  • Controleer of het subdomein via de DNS naar onze server verwijst, of verwijs dit middels een nieuw A record wanneer de DNS extern draait.
  • Installeer vervolgens een SSL certificaat op het subdomein via Let’s Encrypt
  • De volgende stap is het toevoegen van dit subdomein in de Concrete5 omgeving via System > Settings > SEO & Redirection

    cPanel - Canonical URLs

  • Voeg nu onderstaande regels toe bovenin het .htaccess bestand, en pas hierbij het domein en subdomein aan:
<IfModule LiteSpeed>
	# Schakel de caching in voor het domein
	RewriteEngine On
	RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
	RewriteCond %{HTTP_HOST} ^domein.nl [NC] [OR]
	RewriteCond %{HTTP_HOST} ^www.domein.nl [NC]
	RewriteRule .* - [E=Cache-Control:max-age=120]
	
	# Sluit caching uit voor het beheer subdomein
	RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
	RewriteCond %{HTTP_HOST} ^beheer.domein.nl$ [NC]
	RewriteRule .* - [E=Cache-Control:no-cache]
	
	# Schakel zoekmachine indexering voor subdomein uit
	RewriteCond %{HTTP_HOST} ^beheer\.domein\.nl$
	RewriteRule .* - [E=NOINDEX_HEADER:1]
	Header set X-Robots-Tag "noindex, nofollow" env=NOINDEX_HEADER
</IfModule>

De caching is nu geactiveerd en klaar om getest te worden! Let op dat je hierbij de snelheid van de tweede weergave van een pagina aanhoud, gezien het eerste bezoek gebruikt wordt om de pagina in de cache te plaatsen.




Caching instellen op basis van cookie

Een andere optie is om de caching enkel te activeren voor bezoekers die niet ingelogd zijn. In dat geval kun je onderstaande regels toevoegen aan het 'application/bootstrap/app.php' bestand.


Voeg onderstaande regels toe aan het .htaccess bestand:

# Schakel de caching in voor het domein als de gebruiker niet is ingelogd
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
RewriteCond %{HTTP_HOST} ^domein.nl [NC] [OR]
RewriteCond %{HTTP_HOST} ^www.domein.nl [NC]
RewriteCond %{HTTP_COOKIE} !user_logged_in [NC]
RewriteRule .* - [E=Cache-Control:max-age=604800]

Voeg vervolgens onderstaande regels toe aan het 'application/bootstrap/app.php' bestand:

use Concrete\Core\Support\Facade\Events;

Events::addListener('on_user_login', function($event) {
// set server side cookie with no expiration
setcookie('user_logged_in', 'true', 0, '/');
});

Events::addListener('on_user_logout', function($event) {
// remove cookie
setcookie('user_logged_in', '', 0, '/');
});

Concrete 5 LiteSpeed cache flushen

Om de LiteSpeed cache ook vanuit de Concrete5 backend te kunnen legen kun je onderstaande regel toevoegen aan het 'application/bootstrap/app.php' bestand:

Events::addListener('on_cache_flush', function($event) {
Header("X-LiteSpeed-Purge:*");
});
Heeft dit artikel je goed geholpen? Dank voor je feedback! Er is een probleem opgetreden bij het verzenden. Probeer opnieuw.