Drupal: jak na vlastní nastavení cache pro bloky

Když vývojář nějakého modulu pro Drupal sestaví blok, určuje i to, jakým způsobem se bude ukládat do cache. Ale co když to na vašem webu vadí? Pak si nastavte cache daného bloku zcela podle svých potřeb.

Reklama

Tentokrát jsem si pro vás připravil velice krátký tip pro Drupal. Máte-li zapnutu cache, pak se každý blok ukládá již jako vyrenderované HTML do mezipaměti, odkud je pak rovnou servírováno. Web se tím pádem urychlí, protože Drupal nemusí zpracovávat blok celý, skládat jej z jednotlivých dat (hledat nejnovější články v něm zobrazené, poslední komentáře či jiné věci) a čekat na reakci databáze. Prostě jen vezme už připravené HTML a v cache jej aktualizuje jednou za čas.

Problém je v tom, že ne vždy je ukládání bloku do cache žádoucí. Například u bloků, které zobrazují nějakou reklamou generovanou pomocí PHP, není žádoucí, aby se aktuální stav uložil do cache. Pak by se třeba nestřídaly různé reklamy na stejné reklamní pozici.

Nebo si představte, že některý blok má zobrazovat informace konkrétnímu uživateli, ale přitom zobrazuje data někoho jiného. Nebo zobrazuje naprosto nerelevantní údaje.

Nedávno jsem řešil problém s umístěním kontaktního formuláře do bloku, který pak bohužel odesílal data tvářící se jako vyplněná vždy na stejné adrese. Přestože skutečnost byla jiná. Na vině bylo uložení do cache a následné nekontrolování aktuální adresy.

Jistě, v mnoha případech je takový problém výsledkem špatného uvážení tvůrce modulu, který daný blok poskytuje. Programátor má na výběr několik nastavení toho, jak se má blok cacheovat:

  • Pro uživatelskou roli
  • Pro daného uživatele
  • Pro danou stránku
  • Globálně
  • Sofistikovanějším pravidlem definovaným v modulu
  • Vůbec

Pokud vám nevyhovuje, jak se daný blok ukládá do cache, případně si myslíte, že tvůrce modulu udělal chybu a nechcete do modulu zasahovat nebo čekat na opravu, pak je tu jedno řešení.

Modul Block Cache Alter

S pomocí modulu nazvaného Block Cache Alter si jako správce webu můžete sami změnit výchozí způsob cacheování jednotlivých bloků.

Po zapnutí modulu vám přibude příslušná volba v nastavení každého z bloků, stačí ji změnit a nastavení uložit. Poté je dobré cache vyprázdnit.

Block Cache Alter

Pokud stavíte moduly pro Drupal sami, připomínám dokumentaci k funkci hook_block_info(), kde máte nastavení cache popsáno. Vzhledem k tomu, že je při definici bloku volitelné, spousta programátorů na něj zapomíná, což pak může vést k různým problémům. Vyvarujte se jich.

Tagy: 

Reklama

Přidat komentář