Ik legde al uit dat je aandacht moet besteden aan de configuratie van je WordPress cache-plugin. WP-Super-Cache is zo’n plugin, en deze plaatst bijna een meest optimale .htaccess
. Lees verder om erachter te komen hoe je WP-Super-Cache verder optimaliseert voor plugins met op cookie-gebaseerde acties.
Op cookie-gebaseerde acties zijn bijvoorbeeld bepaalde onderdelen van een WooCommerce webshop die met cookies werken en iets wel of niet tonen.
Voorbeeld WP-Super-Cache configuratie
Een veelgebruikte voorbeeld WP-Super-Cache (WPSC) configuratie is zoals hieronder in de afbeeldingen:
Ik heb de volgende instellingen gezet:
- Easy
- Caching: Caching On
- Advanced
- Caching: Enable Caching
- Cache Delivery Method: Expert
- Miscellaneous:
- Disable caching for logged in visitors. (Recommended)
- Don’t cache pages with GET parameters (?x=y at the end of a url)
- Compress pages so they’re served more quickly to visitors. (Recommended)
- Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated (Recommended)
- 304 Browser caching. Improves site performance by checking if the page has changed since the browser last requested it. (Recommended)
Hoe voer je een hard refresh in Chrome uit?
Dit resulteert in de volgende .htaccess
rewrite regels (let op: lang)
# WP-Super-Cache regels, door Vevida toegevoegd
# BEGIN WPSuperCache
# De richtlijnen (regels) tussen `BEGIN WPSuperCache` and `END WPSuperCache` worden
# dynamisch aangemaakt en zouden enkel aangepast mogen worden via WordPress filters.
# Elke wijziging aan deze richtlijnen tussen deze markeringen worden overschreven.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#If you serve pages from behind a proxy you may want to change 'RewriteCond %{HTTPS} on' to something more sensible
RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{HTTPS} on
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz" [L]
RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{HTTPS} !on
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html.gz -f
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html.gz" [L]
RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTPS} on
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html -f
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html" [L]
RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTPS} !on
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html -f
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html" [L]
</IfModule>
# END WPSuperCache
Dit ziet er prima uit.
De twee regels die vaak de mist in gaan zijn de regels die herschrijven naar (..)/index.html.gz
. Als je merkt dat je browser bestanden downloadt in plaats van de content laat zien, dan zet je “Compress pages so they’re served more quickly to visitors. (Recommended)” uit en/of je verwijdert die twee RewriteCond / RewriteRule blokken.
Een populaire plugin voor WordPress WooCommerce webshops is YITH WooCommerce Wishlist. Deze plugin maakt een wishlist (of wensenlijst) mogelijk: bezoekers kunnen artikelen die zij leuk vinden, maar niet direct willen kopen, toevoegen aan een wensenlijst.
Thanks to the wishlist, users can:
Save their favourite products, find them quickly and easily at a later time and buy them.
Share the wishlist with relatives and friends for Christmas, birthdays and similar occasions so they can buy them one of the products from the list.
Share the wishlist on social networks and get indirect advertising for your store.
Omdat deze functionaliteit werkt met cookies, moet je de cookie-uitzondering in je WP-Super-Cache .htaccess uitbreiden. Het gaat om de cookies yith_wcwl_session en yith_wcwl_products.
De %{HTTP:Cookie}
.htaccess regels kun je hiermee uitbreiden en worden:
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_|yith_wcwl_session|yith_wcwl_products).*$
Wist je dat je beide cookienamen kunt samenvoegen en verkorten? Dat wordt: yith_wcwl_(session|products)
Gebruikers van jouw webshop kunnen nu weer succesvol gebruikmaken van de wishlist-functionaliteit van YITH WooCommerce Wishlist. Maar let op dat die requests niet meer gecachet worden door WPSC.
Simple cache delivery method: in geval van twijfel of problemen
Als je twijfelt aan de WP-Super-Cache (WPSC) instellingen, of juist problemen ondervindt, ga dan voor de Simple Cache Delivery Method. Hierbij is er geen .htaccess configuratie en worden HTTP-requests door de PHP van WPSC afgehandeld. Vrijwel net zo snel volgens de ontwikkelaar.
Een paar van de mogelijke instellingen zie je hieronder:
En je kunt het verlopen van de cache en het opruimen ervan op een tijdstip zetten als je dat wilt.
De tip bij problemen is toch wel: ga terug naar de bron, begin eenvoudig en gebruik standaard instellingen.
Nu vraag je je wellicht af hoe je erachter kunt komen welke cookies voor zaken worden gebruikt. Dat is relatief simpel: de Hulpprogramma’s voor ontwikkelaars in Google Chrome (of in Mozilla Firefox) kan je dit laten zien. Gebruik in Chrome hiervoor de sneltoets F12 of CTRL + SHIFT + I, en je vindt de informatie via het tab Network.
Gebruik de hulpprogramma’s voor ontwikkelaars ook voor het uitvoeren van een hard refresh in Chrome.
Conclusie
Door even aandacht te besteden aan de instellingen van een WordPress cache-plugin, in dit geval WP-Super-Cache, en de site ondertussen te testen, is het probleem van het niet goed opslaan en weergeven van items in een wishlist opgelost. Eenvoudig door het uitsluiten van één of meerdere cookies van de cache.
Als je het helemaal goed wilt doen, dan zul je wat codewijzigingen moeten maken en bestanden toevoegen als plugin van WP-Super-Cache.
Ja, je kunt plugins gebruiken in de plugin WP-Super-Cache. Een plugin is een klein stukje code om de functionaliteit van WPSC uit te breiden. Een ander voorbeeld is een plugin om cachebestanden te verkleinen. Je leest in Donncha’s blog WP Super Cache and Cookie Banners hoe je dit doet. Donncha is de ontwikkelaar van WP-Super-Cache.