---
url: 'https://dxpr.com/de/hc/documentation/learn-dxpr-builder/tutorials/portfolio-gallery'
title: 'Caching | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T08:46:22+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  Eine DXPR Builder-Seite ist ein Drupal-Feld-Render-Array mit eigenen
  Cache-Metadaten, plus einer Handvoll interner Caches, die das Modul für
  den Editor und die Lizenzprüfung hält. Diese Seite listet, was der Code
  cacht, welche Tags und Kontexte er nutzt, was sie invalidiert und
  was Sie nach einem Update von Hand leeren.
  Das Builder-Feld
  Der DXPR Builder-Feldformatter setzt diese Cache-Metadaten auf
  jedes Builder-Feld:
tags:
  - 'Volg een tutorial'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T09:09:48+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: Caching
      description: |-
        Eine DXPR Builder-Seite ist ein Drupal-Feld-Render-Array mit eigenen
        Cache-Metadaten, plus einer Handvoll interner Caches, die das Modul für
        den Editor und die Lizenzprüfung hält. Diese Seite listet, was der Code
        cacht, welche Tags und Kontexte er nutzt, was sie invalidiert und
        was Sie nach einem Update von Hand leeren.
        Das Builder-Feld
        Der DXPR Builder-Feldformatter setzt diese Cache-Metadaten auf
        jedes Builder-Feld:
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T08:46:22+0000'
      dateModified: '2026-10-24T09:09:48+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/de/hc/documentation/learn-dxpr-builder/tutorials/portfolio-gallery'
      articleSection: 'Volg een tutorial'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/de/hc/documentation/learn-dxpr-builder/tutorials/portfolio-gallery'
      description: |-
        Eine DXPR Builder-Seite ist ein Drupal-Feld-Render-Array mit eigenen
        Cache-Metadaten, plus einer Handvoll interner Caches, die das Modul für
        den Editor und die Lizenzprüfung hält. Diese Seite listet, was der Code
        cacht, welche Tags und Kontexte er nutzt, was sie invalidiert und
        was Sie nach einem Update von Hand leeren.
        Das Builder-Feld
        Der DXPR Builder-Feldformatter setzt diese Cache-Metadaten auf
        jedes Builder-Feld:
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Startseite
            item: 'https://dxpr.com/de'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: de
---
[Help Center](/de/hc)/[Documentation](/de/hc/documentation) /[Learn DXPR Builder](/hc/documentation/learn-dxpr-builder) /[Build pages](/hc/documentation/learn-dxpr-builder/build) /[Volg een tutorial](/hc/documentation/learn-dxpr-builder/tutorials/overview) # Caching.

 Learn DXPR BuilderBuild pagesVolg een tutorial

   ## In this guide

 Related guides

- [Eine Drupal-Ansicht auf Ihrer Seite anzeigen](/de/hc/documentation/learn-dxpr-builder/integrations/drupal-views)
- [Ein Bild aus Ihrer Medienbibliothek platzieren](/de/hc/documentation/learn-dxpr-builder/tutorials/case-study)
- [Ein Bild hinzufügen](/de/hc/documentation/learn-dxpr-builder/elements/image)

Eine DXPR Builder-Seite ist ein Drupal-Feld-Render-Array mit eigenen Cache-Metadaten, plus einer Handvoll interner Caches, die das Modul für den Editor und die Lizenzprüfung hält. Diese Seite listet, was der Code cacht, welche Tags und Kontexte er nutzt, was sie invalidiert und was Sie nach einem Update von Hand leeren.

## Das Builder-Feld

Der **DXPR Builder**-Feldformatter setzt diese Cache-Metadaten auf jedes Builder-Feld:

| Metadaten | Wert | Wirkung |
|---|---|---|
| Cache-Kontext | `user.roles:authenticated` | Anonyme und authentifizierte Besucher erhalten getrennte Cache-Einträge. |
| Cache-Tags | Die eigenen Tags der Entität, `config:dxpr_builder.settings` und `config:language.entity.<langcode>` für die gerenderte Sprache | Das Speichern der Entität, das Speichern der Moduleinstellungen oder das Ändern der Sprachkonfiguration invalidiert das gerenderte Feld. |
| `max-age` | `0` für alle authentifizierten Besucher | Builder-Felder werden für eingeloggte Besucher nie im Dynamic Page Cache gecacht, weil das Render-Array benutzerspezifische `drupalSettings` trägt (E-Mail, CSRF-Tokens, Profil). |

Für anonyme Besucher wird das Feld normal gecacht, sodass Internal Page Cache und Dynamic Page Cache Builder-Seiten ausliefern, ohne den Modulcode laufen zu lassen. Das Speichern im Builder speichert die Entität, sodass Drupal die Cache-Tags der Entität invalidiert wie bei jedem anderen Speichern.

Wenn der Editor auf dem Feld aktiviert ist, fügt das Modul `config:dxpr_builder.settings` erneut hinzu. Mit **Asset source** auf **Cloud** und ohne konfigurierten Produktschlüssel setzt es `max-age` außerdem auf `0`, sodass die Produktschlüsselmeldung auf jeder Seite erscheint.

Die eigenen Adminformulare des Moduls invalidieren `config:dxpr_builder.settings`explizit: **General Settings**, **AI**, das Benutzerprofilformular und die Seiten- und Benutzervorlagenformulare.

## Ansichten und Blöcke auf einer Seite

Blöcke und Ansichten liegen im gespeicherten HTML als leere `az-cms-element`-Platzhalter. Wenn das Feld rendert, lädt das Modul jeden Block oder jede Ansicht, rendert sie mit dem Core-Renderer und fügt die Ausgabe in das Feldmarkup ein. Die Libraries der Ansicht und ihre `drupalSettings` werden aufs Feld kopiert; ihre Cache-Metadaten blubbern durch den Renderer wie bei jedem Render-Array während eines Seitenrenderns.

Die Folge ist, dass die Zeilen einer Ansicht im gecachten Feld bleiben, bis eines der Cache-Tags der Ansicht invalidiert wird. Eine Ansicht mit zeitbasiertem Caching behält alte Zeilen ihre ganze Lebensdauer. Wenn Besucher veraltete Zeilen sehen:

1. Öffnen Sie die Ansicht, klappen Sie **Advanced** auf und setzen Sie **Caching** auf **Tag based**. **None** stoppt den Dynamic Page Cache, aber der Internal Page Cache behält weiter ganze Seiten für anonyme Besucher.
2. Speichern Sie die Ansicht. Das Speichern einer Ansicht invalidiert außerdem `config:view_list`, was die Ansichtslisten des Moduls für den Editor leert.
3. Leeren Sie alle Caches.

Im Editor wird ein hinzugefügter oder geänderter Block bzw. eine Ansicht über `/dxpr_builder/ajax` geholt. Das Modul cacht diese Antwort nicht.

## Interne Caches

Alle Einträge liegen im Standard-Cache-Bin (`cache.default`). Die Element-Picker-Caches tragen das Tag `dxpr_builder:cms_elements`plus die Listen-Cache-Tags der Entitätstypen, die sie listen, sodass sie sich selbst leeren, wenn sich diese Entitäten ändern.

| Cache-ID | Inhalt | Geleert durch |
|---|---|---|
| `dxpr_builder:cms_elements_blocks`, `dxpr_builder:cms_block_categories` | Blockliste und Blockkategorien für den Element-Picker | Speichern oder Löschen eines Inhaltsblocks oder eines Webformulars (`block_content_list`, Webformular-Listen-Tags), Löschen der Einträge bei Deinstallation eines Moduls, `drush cr` |
| `dxpr_builder:cms_disallowed_elements:<uid>:<roles hash>` | Blöcke, die dem aktuellen Konto nicht zur Verfügung stehen | Dieselben Tags plus `config:user.role.<role>` für jede Rolle des Kontos |
| `dxpr_builder:cms_elements_views`, `dxpr_builder:cms_view_elements_settings`, `dxpr_builder:cms_views_tags` | Ansichtanzeigen, deren Einstellungen und Kennungen für den Editor | Speichern, Hinzufügen oder Löschen einer Ansicht (`config:view_list`), `drush cr` |
| `dxpr_builder:button_styles` | Button-Stile für das Button-Element | Tag `dxpr_builder:cms_elements`, `drush cr` |
| `dxpr_builder_license_info` | Ergebnis des Lizenzstatus-Abrufs | Läuft nach 24 Stunden ab, wenn autorisiert, sonst nach 30 Minuten (`LICENSE_CHECK_INTERVAL`, `LICENSE_NOT_AUTHORIZED_INTERVAL`); invalidiert, nachdem die Website eine Benutzeränderung an den Lizenzserver sendet |
| `dxpr_builder_license_users` | Redaktionsliste vom Lizenzserver | Läuft nach 24 Stunden ab; invalidiert, nachdem die Website eine Benutzeränderung an den Lizenzserver sendet |
| `dxpr_builder_blacklisted` | Domain-Blocklist-Ergebnis | Läuft nach einer Stunde ab, oder nach einer Minute, solange die Domain blockiert ist |
| `dxpr_builder:jwt_decoded:<sha256 of the key>` | Dekodierter Produktschlüssel, ein Eintrag pro Schlüssel | Tag `config:dxpr_builder.settings` |

Theme-Utility-Klassen (`dxpr_builder_classes` in einem Theme- `.info.yml`) kommen aus Drupals gecachten Theme-Informationen, sodass eine Änderung `drush cr` braucht, bevor der Editor sie sieht. Icon-Set-Dateien (`*.dxpr_icon_sets.yml`) werden bei jedem Editor-Seitenaufruf gelesen, aber eine Library, die sie nennen, braucht `drush cr` wie jede neue Library.

## Assets und Aggregierung

Die sechs Editor-Skripte sind entweder extern (Cloud) oder mit `preprocess: FALSE` deklariert, sodass die Aggregierung sie nie anfasst. Die Aggregierung gilt für die Hilfs-Libraries des Editors, etwa `dxpr_builder/editor.core` mit Sortable, und für die Besucherdateien (`dxpr_builder/core`, `dxpr_builder/editor.frontend`, die `elements.*`-Libraries und `bootstrap_5`). Zwei Symptome gehen auf den Aggregierungs-Cache zurück:

- Der Editor bricht nach einem Update, oder meldet `Sortable is not defined` nur bei eingeschalteter Aggregierung. Folgen Sie [Der Editor erscheint nicht](/hc/documentation/learn-dxpr-builder/troubleshooting/editor-not-loading).
- Besucher sehen nach einem Update oder einer Einstellungsänderung kein Styling oder keine Icons. Folgen Sie [Besucher sehen etwas anderes](/hc/documentation/learn-dxpr-builder/troubleshooting/visitors-see-something-else).

## Was nach einem Update zu leeren ist

1. Führen Sie die Datenbank-Updates aus und leeren Sie dann die Caches:

    ```bash
    drush updb -y
    drush cr

    ```

    `drush cr` baut die Library-Definitionen des Builders neu, die der Modulversion und der Assetquelle folgen, die aggregierten Assetdateien und die internen Caches oben.
2. Öffnen Sie als Mitglied der Redaktion eine Builder-Seite und speichern Sie sie. Das schreibt die Seite mit dem Markup der aktuellen Version und invalidiert ihre Entitäts-Tags.
3. Purgen Sie hinter Varnish oder einem CDN die Builder-Seiten oder warten Sie, bis das Höchstalter abläuft; das Modul sendet keine Purge-Anfragen.

Wenn eine Seite Besuchern weiter alte Inhalte zeigt, siehe [Probleme nach dem Aktualisieren](/hc/documentation/learn-dxpr-builder/troubleshooting/after-updating).

## Wie geht es weiter?

- [Performance](/de/hc/documentation/learn-dxpr-builder/advanced/performance), was jede Besucher- und Redaktionsseite lädt.
- [Architektur](/de/hc/documentation/learn-dxpr-builder/development/architecture) für den Code, der ein Builder-Feld rendert, speichert und cacht.
- [Besucher sehen etwas anderes](/hc/documentation/learn-dxpr-builder/troubleshooting/visitors-see-something-else)für die cachebezogenen Symptome und ihre Lösungen.