Puncte:1

Blocarea personalizată este încă memorată în cache pentru utilizatorii anonimi, în ciuda faptului că getCacheMaxAge() este setat la 0 și nu poate înțelege de ce

drapel ng

Am un bloc personalizat Drupal 8 cu clasă cu funcții build() și getCacheMaxAge(). getCacheMaxAge() este setat la 0, dar este încă memorat în cache pentru utilizatorii anonimi.

Dacă pun cod de depanare în funcția build() pot vedea că este apelat când sunt conectat, dar nu pentru utilizatori anonimi.

Codul meu este mai jos. Avem Memcached instalat. Asta ar cauza problema?

Singurele alte module de stocare în cache sunt de bază.

<?php
class HeaderPhone extends BlockBase {
  /**
   * {@inheritdoc}
   */
  public function build() {

    $info = geo_location_blocks_get_region();
    $region = $info['region'];
    $tid = $info['tid'];

    return array(
        '#theme' => 'geo_location_header_phone',
        '#region' => $region,
        '#view' => views_embed_view('locations', 'block_3', $tid),
      
    );
  }

  /**
   * @return int
  */
  public function getCacheMaxAge() {
    return 0;
  }
}?>

  
Jaypan avatar
drapel de
S-ar putea să fie nevoie să adăugați și un max-age la matricea de randare, folosind `'#cache' => ['max-age' => 0]]`.
quantumized avatar
drapel ng
Mulțumesc, Jaypan, am încercat să adaug #cache la matricea de randare, așa cum s-a sugerat, dar blocul este încă memorat în cache pentru utilizatorii anonimi.
Jaypan avatar
drapel de
Recitirea postării dvs., memcache-ul ar putea fi o problemă. Puteți încerca să îl dezactivați și să vedeți dacă problema persistă. Sau testarea într-un mediu cu memcache dezactivat. Cealaltă posibilitate este ca cache-ul paginii poate stoca în cache întreaga pagină pentru utilizatori anonimi.
quantumized avatar
drapel ng
Am exclus memcache-ul. Am testat problema pe o copie a site-ului pe un alt server fără Memcached și problema este încă acolo.
Puncte:5
drapel cn

Setarea cache max-age la 0 nu funcționează dacă mai aveți modulul de bază Cache internă a paginii activat.

Citiți documentația de ce probabil doriți să dezactivați acest modul sau să livrați blocul cu o altă metodă:

Site-uri web care oferă conținut personalizat utilizatorilor anonimi (dinamic, pe sesiune, de ex. un coș de cumpărături) vor dori să dezactiveze Intern Modulul Page Cache. Acest modul presupune că paginile sunt identice pentru toate utilizatori anonimi. Aceste site-uri web încă pot profita de Modulul Dynamic Page Cache, totuși, sau poate, alternativ, să le facă personalizare folosind JavaScript + AJAX.

https://www.drupal.org/docs/administering-a-drupal-site/internal-page-cache

quantumized avatar
drapel ng
Mulțumesc. modulul Internal Page Cache a fost problema.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.