[SOLVED] Probleme mit Caching


(Michael Sauer) #1

Hallo,

ich habe momentan ein Caching-Problem. Ich habe mir zwei neue NodeTypes erstellt. Einmal “Team” und einmal “Mitarbeiter”. Im “Team”-Inhalt kann man unter den Eigenschaften eine Seite auswählen wo die “Mitarbeiter” liegen, sodass diese dann aufgelistet werden. So weit funktioniert auch alles. Wenn ich allerdings Änderungen an einem “Mitarbeiter” mache, werden die Änderungen nicht im Frontend übernommen (Veröffentlichung wurde ausgeführt). Erst nachdem ich den Cache geleert habe (FLOW_CONTEXT=Development ./flow flow:cache:flush --force) werden die Änderungen angezeigt.

Die Fusion-Konfiguration für “Team” sieht wie folgt aus:

prototype(Laudert.Website:Team) < prototype(Laudert.Website:Content) {
    templatePath = 'resource://Laudert.Website/Private/Templates/NodeTypes/Team.html'

    node = ${q(node).property('node')}
    sortProperty = ${q(node).property('sortProperty')}
    sortOrder = ${q(node).property('sortOrder')}

    employees = ${q(site).find('#' + this.node.identifier).find('[instanceof Laudert.Website:Employee]').sort(this.sortProperty, this.sortOrder).get()}
}

Und die Konfiguration für “Employee” so:

prototype(Laudert.Website:Employee) < prototype(Laudert.Website:Content) {
    templatePath = 'resource://Laudert.Website/Private/Templates/NodeTypes/Partials/Employee.html'

    tags = ${q(node).property('tags')}
    image = ${q(node).property('image')}
    firstname = ${q(node).property('firstname')}
    lastname = ${q(node).property('lastname')}
    position = ${q(node).property('position')}
    email = ${q(node).property('email')}
    telephone = ${q(node).property('telephone')}
    alignment = ${q(node).property('alignment')}
}

Ich habe auch schon mit “@cache” und “mode=‘uncached’” gearbeitet, aber das hat auch nichts gebracht. Was muss ich einstellen damit ich hier kein Caching habe?


(Daniel Lienert) #2

Hey Michael,

du musst im Caching des Teams noch einstellen, dass es sich ändert, wenn sich die Mitarbeiter ändern. Ein Caching willst du ja schon haben. Aber du möchtest, dass der CacheEintrag des Team Elements gelöscht wird, wenn immer sich ein Mitarbeiter ändert.

prototype(Laudert.Website:Team) {
    @cache {
            mode = 'cached'
            entryIdentifier {
                node = ${node}
            }
            entryTags {
                1 = 'NodeType_Laudert.Website:Employee'
                2 = ${'Node_' + node.identifier}
            }
        }
}

(Michael Sauer) #3

Hi Daniel,

super, vielen Dank! Funktioniert wie erwartet :slight_smile: