Authcache-module (Drupal): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 63: Regel 63:
 
''' Configuratie '''
 
''' Configuratie '''
  
* [https://www.drupal.org/project/cacherouter Drupal Cache Router-module] als caching-systeem
+
* [http://pecl.php.net/package/memcache PHP's Memcache-module] - Da's de basis
* [http://pecl.php.net/package/memcache PHP's Memcache-module] als eigenlijke cache
+
* [https://www.drupal.org/project/authcache autcache-module]
 +
* [https://www.drupal.org/project/cacherouter Drupal Cache Router-module] als caching-systeem (''niet'' Memcache API, want dubbelop)
 +
 
 
* Dagelijks ''crawlen''
 
* Dagelijks ''crawlen''
  

Versie van 6 okt 2015 13:55

Ik heb regelmatig het probleem dat Drupal 6-Ubercart sites nogal traag zijn vanwege de overhead vanwege dynamisch genereren van catalogus-pagina's. In juni 2013 heb ik de Authcache-module gebruikt voor http://www.carbonbrushes-online.com/.

Bins & cache-handlers

Drupal werkt met verschillende soorten bins of opslag voor verschillende soorten caches: Page-, block-, menu-caches. Misschien zijn er nog meer. Standaard gebruikt Drupal database-tabellen als bin. Dat zijn de tabellen waarvan de naam begint met cache.

Authcache houdt zich bezig met de page-cache. Standaard wordt daar een database-tabel voor gebruikt, tenzij je zo slim bent om de raad van authcache op te volgen om een cache handler te gebruiken, want database-tabellen zijn niet het meest effectief voor dit doel.

Voor Drupal 7 is Memcache API de aangewezen cache-handler. Voor Drupal 6 schijnt Cache Router ook een goede kandidaat te zijn, naast Memcache API[1].

Probleem met geleegde caches

Authcache werkt super maarrrr heeft een probleem: De cache wordt om de haverklap geleegd, onder andere bij de volgende gebeurtenissen, en dit beperkt het nut van de module nogal:

  • Aanmaak van een nieuwe node
  • Bewerken van een node
  • Cron.

Cache invalidation (Dit is achtergrondinformatie)

Het mechanisme om caches te legen, heet cache invalidation. Drupal doet dat zo snel een node wordt toegevoegd of wordt bijgewerkt, wanneer cron wordt aangeroepen, etc. Dat gaat mbv. de functie cache_clear_all:

function cache_clear_all($cid = NULL, $bin = NULL, $wildcard = FALSE) {
  if (!isset($cid) && !isset($bin)) {
    // Clear the block cache first, so stale data will
    // not end up in the page cache.
    if (module_exists('block')) {
      cache_clear_all(NULL, 'cache_block');
    }
    cache_clear_all(NULL, 'cache_page');
    return;
  }
  return _cache_get_object($bin)->clear($cid, $wildcard);
}

Cron-frequentie beperken

  • De beste oplossing die ik tot op heden ken: Cron instellen op eens per week (dat is de maximale periode) en verder niets doen. Op de meeste webwinkels worden nodes maar zelfde aangemaakt of gewijzigd
  • Cruciaal dat ongecashte pagina's wel geladen kunnen worden zonder time-out. En dat is soms niet best lastig.

De oplossing is waarschijnlijk het crawlen van de site. Zie betreffende hoofdstuk.

Boost Crawler

De maker van Authcache legt hier uit dat het lastig is om een site bij te werken, en tegelijkertijd gedeeltes van een site gecached te houden. En hier legt hij uit dat de Boost-module met de boost_crawler_run()-functie de site herbouwt mbv. een crawler. Er wordt dus bezoek gesimuleerd.

Probleem met opeens trage site na aanpassing

In juli 2013 heb ik het ontwerp van http://www.wespenvangers.nu/ aangepast van twee naar drie kolommen. Daarna leek caching niet meer te werken. Een dag later nog steeds niet.

Oplossing

Probleem lijkt opgelost te zijn nadat ik knop Save & clear cached pages indrukte op de AuthCache-pagina.

Casus mrt 2015: Tuinbeslag-online.nl versnellen

De home page van tuinbeslag-online.nl laadde in 2,2s. Na oppimpen van de VPS werd dit 1,7s. Nog steeds te langzaam. Aan de slag gegaan met authcache, maar te veel storingen met configureren cacherouter.

Casus okt. 2015: Koolborstels-online.nl versnellen (Drupal 6)

Configuratie

  • Dagelijks crawlen

Actie

  • PHP's Memcache-module geïnstalleerd
  • Installatie Cache Router-module: drush en cacherouter
  • Installatie Authcache-module: drush en authcache

Zie ook

Bronnen