Bepaalde post types niet cachen in WP Rocket

Om een site snel te krijgen gebruik ik vaak WP Rocket: volgens mij een van de snelste caching plugins voor WordPress. Als een pagina gecached wordt, wordt deze eigenlijk opgeslagen in een aparte folder. De website hoeft deze pagina dan niet meer op te bouwen uit de php code: er is een kant en klaar html bestand gereed. Dit werkt veel sneller dan wanneer de server nog helemaal de code moet doorlopen (e.e.a. is natuurlijk ook afhankelijk van je server snelheid).

In sommige gevallen is het niet handig om elke pagina keihard uit de cache aan te leveren: bijvoorbeeld als je een webshop hebt waar er soms een product in het winkelmandje staat, en soms niet. Je kan natuurlijk de cache voor die pagina’s helemaal uitzetten, maar dan zijn bijvoorbeeld de javascript en css bestanden ook niet meer geminimaliseerd. Het gevolg is dat alle javascript files etc op dat moment ook weer opnieuw geladen worden door de gebruiker. Dat is natuurlijk jammer. Wat ik graag wou is dat de minify features wel behouden bleven, maar dat de pagina niet in de page cache terecht zou komen.

Bij Easy Digital Downloads kwam ik dit probleem tegen. Ook al worden de afrekenpagina’s etc. standaard niet gecached, het winkelmandje in de zijbalk van een product werd dat wel. Om dit te voorkomen heb ik even contact gehad met de support afdeling van WP Rocket. Uiteindelijk zijn we tot de volgende oplossing gekomen, waarin de page cache niet wordt gebruikt als het post_type ‘download’ in gebruik is. Je kan dit natuurlijk voor elke post type gebruiken. In WooCommerce zou je dit kunnen toepassen op post type ‘product’.

/* 

  don't create page cache on downloads pages. 

*/

add_action('wp', 'rsssl_wprocket_no_page_cache');

function rsssl_wprocket_no_page_cache(){
  global $post;

  if ($post && ( get_post_type($post)=='download' ) ) {

     add_filter('do_rocket_generate_caching_files','__return_false');

  }

}