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
Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal a Symfony. Obojí také školím spolu se základy SEO. Jsem Acquia Certified Developer a Site Builder a napsal jsem několik knih o Drupalu. Ve volných chvílích cestuji a podnikám výlety. Více se dozvíte na mém firemním webu.

reklama

Komentáře k článku

Přidat komentář

Filtered HTML

  • Povolené HTML značky: <a href hreflang> <em> <strong> <cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <p> <br>
  • Řádky a odstavce se zalomí automaticky.
  • Web page addresses and email addresses turn into links automatically.

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

reklama
Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Poslední komentáře
reklama
Nové diskuze
reklama
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.

Knihy o Drupalu

Kniha Drupal 8 Kniha Drupal 7 333 tipů a triků pro Drupal
Více na KnihyPolzer.cz

@maxiorel na Twitteru

Maxiorel na Twitteru