terug naar blogs

Shopware 6: Performance optimalisatie in vijf stappen.

shopware 6 logo
avatar van Danny
auteur
Danny
auteur
avatar van Danny
Danny
Shopware 6 optimalisatie
4 januari 2023 leestijd 5-7 minuten

Met het verlopen van Magento (1.X) is er een merkbare stijging in populariteit geweest van andere Ecommerce platformen en zien wij steeds meer webshops gebouwd worden in Shopware 6. Net als ieder CMS heeft Shopware 6 zijn eigen features, functies, voor en na-delen wat betreft hosting en performance. Als vervolg op onze blog artikelen over optimalisatie voor WordPress (WooCommerce) en Magento 2 hebben we daarom besloten onze performance optimalisatie reeks uit te breiden met Shopware 6!

1. Updaten en opruimen

Hoewel ieder CMS inderdaad anders is hebben ze allemaal één ding gemeen; Updates. Iedere update brengt belangrijke beveiliging, features of performance updates met zich mee en zijn essentieel voor het goed functioneren van je applicatie. Als je aan de slag gaat met optimalisatie is het eerste wat je moet doen controleren of de applicaties en eventueel bijhorende plugins up to date zijn. Vanaf versie 6.4.17.0 is bijvoorbeeld de Varnish Xkey functie toegevoegd waardoor je voor Varnish geen Redis instance meer nodig hebt. De laatste versie en changelog zijn beschikbaar op de Shopware website. Als alles up to date is dan is de volgende stap om te controleren of alles wat actief staat ook daadwerkelijk gebruikt wordt. Hoe minder plugins, widget of externe diensten hoe beter de performance.

2. Admin Workers en Queue’s

Shopware 6 maakt standaard gebruikt van admin workers. Dit is een functie die er voor zorgt dat er op de achtergrond processen worden doorlopen zoals de message queue en scheduled tasks. Het nadeel van deze admin workers is dat er een admin daadwerkelijk ingelogd moet zijn om deze processen te laten lopen . Bij meerdere admin users in de back-end kan dit een flinke load leggen op de CPU’s van de server. Om deze reden raad Shopware het af om deze functie op productie omgevingen te gebruiken en gebruik te maken van de CLI in combinatie met bijvoorbeeld een cronjob.

Om de admin workers uit te schakelen pas je het bestand config/packages/shopware.yaml aan met de volgende code.

shopware:
admin_worker:
enable_admin_worker: false

Vervolgens kan je message queue en de scheduled tasks via de CLI activeren of automatiseren middels een cronjob.

bin/console messenger:consume default --time-limit=60 
bin/console scheduled-task:run --time-limit=60

3. Elasticsearch

De meeste e-commerce developers zijn ondertussen bekent met Elasticsearch. Wanneer een webshop een groot volume producten of verkeer heeft dan worden zoekopdrachten steeds zwaarder voor de database. Elasticsearch is een applicatie die het zoeken sneller en efficiënter maakt door indexeringen te maken van geselecteerde data. Dit verminderd de load op de database aanzienlijk. In Magento 2.X is Elasticsearch de standaard zoekfunctie. Shopware 6.X heeft de module Shopware Advanced Search (SESP) welke een Elasticsearch omgeving nodig heeft om te functioneren.

Om Elasticsearch te gebruiken moet je via de .env file in je applicatie folder de volgende variable aanpassen.

SHOPWARE_ES_HOSTS=":"
SHOPWARE_ES_ENABLED="" #0 niet actief, 1 actief
SHOPWARE_ES_INDEXING_ENABLED="" #0 niet actief, 1 actief
Afbeelding voor

Maak je nog geen gebruik van Elasticsearch in je webshop?

4. Caching voor Shopware 6

HTTP Cache via Redish
De juiste caching kan een enorm verschil maken bij de performance van een webshop. Shopware adviseert in hun documentatie HTTP cache als een must have voor iedere webshop. Standaard wordt deze cache lokaal opgeslagen. Het is mogelijk om de cache adapters aan te passen naar bijvoorbeeld een Redis instantie. Het voordeel van een Redis cache is dat dit sneller is dan lokaal cache opslaan.

Om dit mogelijk te maken voeg je de volgende regels toe aan de .env file

REDIS_CACHE_HOST=(IP ADRESS)
REDIS_CACHE_PORT=(REDIS PORT)

Vervolgens maak je het bestand config/services.yaml aan mits deze nog niet aanwezig is en voeg je de volgende regels toe.

app.redis.cache.host: “%env(REDIS_CACHE_HOST)%“
app.redis.cache.port: “%env(REDIS_CACHE_PORT)%“

Als laatste maak je het bestand config/packages/framework.yaml aan mits deze nog niet aanwezig is en voeg je de volgende regels toe. Deze regels gebruik je wanneer je alleen de HTTP cache wilt instellen via Redis

framework:
cache:
default_redis_provider: “redis://%app.redis.cache.host%:%app.redis.cache.port%“
pools:
cache.http:
default_lifetime: 3600
adapter: cache.adapter.redis
tags: cache.tags

Het is ook mogelijk om App cache via Redis te draaien. Wanneer je voor zowel HTTP cache als App cache Redis gebruikt dan gebruik je in config/packages/framework.yaml de volgende config.

framework:
cache:
app: cache.adapter.redis
default_redis_provider: “redis://%app.redis.cache.host%:%app.redis.cache.port%“

Vergeet niet als laatste nog een cache clear te doen om de wijzigingen te activeren.

bin/console cache:clear

Reverse HTTP cache via Varnish
Sinds een van de meest recente updates heb je tegenwoordig geen Redis meer nodig om via Varnish een reverse HTTP cache te serveren. Reverse HTTP cache is HTTP cache die via een reverse proxy instantie zoals Varnish geserveerd wordt. Het voordeel van deze methode is dat dit vóór de webserver draait. Dit betekent dat deze requests alvorens ze bij de webserver komen terug gestuurd kunnen worden vanuit de cache. Dit scheelt de webserver aanzienlijk resources afhankelijk van het hit percentages van de cache.

Zowel Redis als Varnish moet beschikbaar gesteld worden door je webhosting partij maar bij Varnish verreist dit aanzienlijk meer configuratie, updates en onderhoud vanuit de server beheerder. Voor klanten van Rootnet hebben wij beiden opties beschikbaar!

Afbeelding voor

Wil je meer performance halen uit je Shopware omgeving?

5. Cloudflare

Voor een extra boost in de performance is Cloudflare altijd een goede toevoeging. Cloudflare is een gratis CDN die iedere webshop onafhankelijk van de hosting partij kan gebruiken. Er bestaan ook betaalde optie wanneer je meer functies wilt gebruiken. Voor klanten die zowel de domein registratie als de webhosting bij ons hebben draaien bestaat er een automatische Cloudflare koppeling in het klanten portaal.

Benieuwd of je webshop sneller is op onze hosting?

Meten is weten

avatar van Danny
Danny staat klaar om je te helpen
Naar contactpagina