Posted by razzel on February 13, 2021 at 3:30pm
Hej!
Jag har skapat ett custom-block. I det har jag lite php-kod. Koden visar slumpmässigt utvalda bilder.
När man kommer till sidan får man alltså se slumpmässigt utvalda bilder. Fungerar utmärkt.
Men: om man uppdaterar sidan slumpas det inte fram nya bilder. Samma bilder visas.
Om jag loggar in som admin, fungerar koden perfekt. Jag kan då tvinga fram nya bilder genom att klicka på Hem-knappen.
Detta indikerar att det är ett behörighetsproblem eller är jag ute och cyklar?
Jag använder Drupal 9.
Comments
Hej Det låter som ett
Hej
Det låter som ett klassiskt caching problem. Drupal har inbyggd funktion att samma sida inte behöver bygga upp igen från databasen varje gång utan kan hämta färdig data direkt och visa. Dock blir det ju besvärligt med sådan sidor som ska ändras varje gång. Då behöver Drupal ta den lång vägen och generea upp sidan igen vilket ökar laddtiden.
Det finns två sätt:
I din PHP kod lägg in Cache-context kod.
https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts
https://www.drupal.org/docs/8/api/render-api/cacheability-of-render-arrays
Det är ett ganska avancerat koncept och kräver en hel del påläsning. Det handlar om hur man vill att datan ska cachas, är det per användare, per roll etc.
En "ful" lösning är att helt död cachen, här är lite input:
https://codimth.com/blog/web/drupal/disable-cache-block-drupal-8
Andra lösningen är att ladda bilder via JavaScript. På det sättet kan grundsidan laddas snabbt och bilder laddas in sedan eftersom och slumpmässigt. Det är lösningen som skalar bäst och mest SEO vänligt. Dock är den lite mer krånglig att lösa.
(Drupal 9 och 8 är nästan samma sak kodmässigt och du kan därför använda det mesta av hjälpen för Drupal 8 i Drupal 9)