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.

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

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru