Вимкнути кеш-пам'ять для конкретних блоків


9

Я хотів би дозволити сторінкам продовжувати користуватися механізмом кешування Drupal 8 для анонімних користувачів, за винятком конкретних блоків, які слід оновлювати на кожній сторінці оновлення, знаючи, що вони генеруються з Views.

Чи технічно це можливо? Як?


Як зазначав MPD, використовуйте налаштування максимального віку. Також ви можете це зробити через інтерфейс користувача на формі редагування блоку.

У мене теж є це питання - це дратує Друпал не вирішує це автоматично. Кешування добре, але Drupal повинен бути призначений для динамічних веб-сайтів ...
Джеймс

Відповіді:


1

Що показує цей блок переглядів?

У D8 є теги кешу та контексти, які автоматично визнають недійсним блок, якщо щось зміниться.

Отже, якщо у вас є список вузлів, щоразу, коли додається чи оновлюється вузол, цей блок буде оновлюватися, але до цього часу використовується кешована версія. Що набагато краще, ніж перебудовувати на кожній сторінці.

Він також працює з кешем сторінок, і ці сторінки також буде оновлюватися автоматично.

Багато, багато речей просто працюють з кешуванням з поля, без необхідності будь-яких конфігурацій вручну.

Редагувати (відповідаючи на коментар):

Випадково з плагіном випадкового сортування? Це автоматично позначатиме цей блок як некешований. Однак це не впливає на модуль кешування сторінок. Зараз з'явився новий модуль кеш-пам’яті / динамічного кешування сторінок, але він буде лише у наступній бета-версії (або RC!). Це врешті-решт дозволить кешувати іншу частину сторінки та просто скласти цю частину.

Але такий випадок, мабуть, найкраще реалізувати за допомогою деякого javascript. Якщо є лише кілька вузлів, ви можете їх відобразити всі, приховані за замовчуванням і просто випадковим чином зробити один з них видимим. Або попросіть URL-адресу з javascript, яка повертає випадкову рекламу, або ще краще відвідайте випадкову кількість N URL-адрес, які кожен повертає оголошення (наприклад, повернувши список URL-адрес, а потім вибравши одну з них. Ви можете навіть зробити це безпосередньо для URL-адреси зображення .


Перегляди повертають випадковий вузол, щоб змінити рекламний блок.
Амін

Я дочекаюсь наступного випуску чистого рішення так :)
Амін

Так, випадковий з плагіну Views Random Sort. Я згоден, можливо генерувати вміст блоку javascript, який міститься в списку сутностей, а потім вирішує на шарі браузера з якоюсь випадковою або круговою функцією вибрати та відключити одну з них. Однак у мене буде кілька блоків, подібних до цього, на деяких сторінках, і рішення на стороні сервера підійдуть найкраще.
Амін

10

Якщо це спеціальний блок, то ви можете використовувати API кешу та встановити максимальний вік кешу на 0, наприклад

$build = [
 // ...
 '#cache' => [
   'max-age' => 0,
 ],
];

Якщо це вже існуючий блок, ви можете змінити його, щоб додати це до масиву візуалізації.


Як пояснено в запитанні, мій блок - це блок Views. Я думаю, що це занадто складно, щоб втручатися на рівні php / module.
Амін

1
На жаль, це все одно не працює (спробував). Схоже, що сторінка доставляється з кеш-сторінки і містить застарілий блок. Але я все ще розслідую.
Райнер Фейке
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.