Wie kann man das Twig-Caching für die Entwicklung WIRKLICH deaktivieren? [geschlossen]


7

Ich habe diese Anweisungen befolgt , um das Twig-Caching zu deaktivieren:

  1. Kopieren Sie die Datei sites / example.settings.local.php und benennen Sie sie in sites / default / settings.local.php um

    $ cp sites/example.settings.local.php sites/default/settings.local.php
  2. Öffnen Sie die Datei settings.php in sites / default und kommentieren Sie diese Zeilen aus:

     if (file_exists(__DIR__ . '/settings.local.php')) {    
       include __DIR__ . '/settings.local.php';  
     }

    Dies schließt die lokale Einstellungsdatei als Teil der Einstellungsdatei von Drupal ein.

  3. Öffnen Sie settings.local.php und ändern Sie die Einstellung in TRUE

    $config['system.performance']['css']['preprocess'] = FALSE;
    $config['system.performance']['js']['preprocess'] = FALSE;
  4. Kommentieren Sie diese Zeile als settings.local.php aus, um den Render-Cache und den dynamischen Seiten-Cache zu deaktivieren

    $settings['cache']['bins']['render'] = 'cache.backend.null';
    $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; 

    Wenn Sie keine Testmodule und -themen installieren möchten, setzen Sie Folgendes auf FALSE

    $settings['extension_discovery_scan_tests'] = TRUE;
  5. Öffnen Sie die Datei development.services.yml im Ordner sites und fügen Sie den folgenden Block hinzu (um den Zweigcache zu deaktivieren).

    parameters:   
      twig.config:
        debug : true
        auto_reload: true
        cache: false

Ich habe doppelt und dreifach überprüft, alle Änderungen wurden korrekt wie oben beschrieben angewendet. Es hat sich jedoch nichts geändert. Ich muss den Cache jedes Mal neu erstellen, wenn ich eine Vorlagendatei ändere, damit sie im Frontend angezeigt wird.

Was sind also die richtigen Schritte, um das Twig-Caching bei einer Standardinstallation von Drupal 8.0.1 zu deaktivieren, ohne dass Contrib- oder benutzerdefinierte Module installiert sind?


Haben Sie die Leistungseinstellungen überprüft? Bei meiner Installation war standardmäßig das Caching aktiviert ...
Volker

Danke @Volker, das ist der erste Ort, den ich überprüft habe - die Aggregation wurde aktiviert, aber das Caching war und ist deaktiviert (agg ist jetzt auch deaktiviert und die Caches wurden neu erstellt)
Clive

1
Ich bin nicht zu 100% sicher, dass dies in dieser Situation hilfreich sein wird, stelle aber auch sicher, dass Ihr lokaler APC oder OpCache deaktiviert ist oder jedes Mal neu gescannt wird.
mpdonadio

Seltsam, das sollte auf jeden Fall funktionieren. Als erstes müssen Sie herausfinden, um welchen Cache es sich genau handelt. Sie haben die Änderung von Vorlagen erwähnt. Wenn Sie etwas in einem Hook _ * _ view () oder an einer anderen Stelle in PHP ändern, die nur zwischengespeichert wird, wird das aktualisiert? Versuchen Sie, die tatsächlichen Einstellungen in Ihrem kompilierten Container mit zu sichern drush ev "var_dump(\Drupal::getContainer()->getParameter('twig.config'))". Stellen Sie sicher, dass die Reihenfolge Ihrer services.yml korrekt ist.
Berdir

@Berdir Es stellte sich heraus, dass die Pipeline das Problem verursacht hat. Die Dokumente sind genau richtig
Clive

Antworten:


1

Das automatische Neuladen sollte null sein, dann wird die Zweigkompilierung umgeschaltet, wenn Sie das Debuggen aktivieren.

auto_reload: null

Der schnellste Weg Debuggen zu ermöglichen Zweig kopieren default.services.ymlzu services.ymlund Set debug: trueundcache: false

Sie können dies überprüfen, wenn Sie sich die vorab festgelegten Zweige ansehen und beim Aktivieren des Zweig-Debuggens dieses Verzeichnis nicht mehr vorhanden sein:

/sites/default/files/php/twig

Ich möchte meine Entwicklungseinstellungen lieber an der empfohlenen Stelle, development.services.yml, aufbewahren, die in meiner sites / default / local.settings.php enthalten ist (die wiederum in der normalen settings.php enthalten ist). Wollen Sie damit sagen, dass dies nicht möglich ist und ich stattdessen die Produktionseinstellungsdatei verwenden sollte? Das Ändern auto_reloadmachte leider keinen Unterschied
Clive

Ich habe gerade versucht, default.services.tml in services.yml zu kopieren, die von Ihnen vorgeschlagenen Änderungen vorgenommen und den Cache neu erstellt - kein Unterschied. Ich muss den Cache immer noch neu erstellen, wenn ich eine Änderung an einer Zweigvorlage vornehme, damit sie angezeigt wird.
Clive

Ich habe dies Dutzende Male getan, das Debuggen von Zweigen ein- und ausgeschaltet, hatte nie Probleme, das ist sehr seltsam. Sehen Sie die Debug-Kommentare, wenn Sie die Quelle im Browser anzeigen? (und siehe die Antwort für zusätzliche Informationen)
4k4

Es ist seltsam @ 4k4 :) Ich habe das schon einmal gemacht und hatte auch kein Problem, nicht sicher, warum es plötzlich auf dieser Seite gestartet wird. Nur in einer Besprechung, aber ich werde Ihre anderen Vorschläge etwas später ausprobieren
Clive

Das Problem stellte sich als eine Kombination von Dingen auf meinem lokalen Computer heraus, die das eigentliche Problem verbargen. Entschuldigen Sie, dass Sie Ihre Zeit verschwendet haben. Nochmals vielen Dank für die Antwort
Clive

0
  1. Kopieren Sie die Datei sites / example.settings.local.php und benennen Sie sie in sites / default / settings.local.php um

    $ cp sites/example.settings.local.php sites/default/settings.local.php
  2. Öffnen Sie die Datei settings.php in sites / default und kommentieren Sie diese Zeilen aus:

     if (file_exists(__DIR__ . '/settings.local.php')) {    
       include __DIR__ . '/settings.local.php';  
     }

    Dies schließt die lokale Einstellungsdatei als Teil der Einstellungsdatei von Drupal ein.

  3. Öffnen Sie settings.local.php und ändern Sie die Einstellung in TRUE

    $config['system.performance']['css']['preprocess'] = FALSE;
    $config['system.performance']['js']['preprocess'] = FALSE;
  4. Kommentieren Sie diese Zeile als settings.local.php aus, um den Render-Cache und den dynamischen Seiten-Cache zu deaktivieren

    $settings['cache']['bins']['render'] = 'cache.backend.null';
    $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; 

    Wenn Sie keine Testmodule und -themen installieren möchten, setzen Sie Folgendes auf FALSE

    $settings['extension_discovery_scan_tests'] = TRUE;
  5. Öffnen Sie die Datei development.services.yml im Ordner sites und fügen Sie den folgenden Block hinzu (um den Zweigcache zu deaktivieren).

    parameters:   
      twig.config:
        debug : true
        auto_reload: true
        cache: false

Nachdem Sie diese Schritte ausgeführt haben, fügen Sie diese beiden Zeilen in Ihre settings.php ein und leeren Sie den Cache.

$ settings ['container_yamls'] [] = DRUPAL_ROOT. '/sites/development.services.yml';

$ settings ['container_yamls'] [] = DRUPAL_ROOT. '/sites/development.services.yml';

Es hat bei meinem Kollegen funktioniert. Hoffe es funktioniert für dich.


Danke, das habe ich auch versucht, aber kein Unterschied - ich muss immer noch den Cache leeren, wenn ich etwas in page.html.twig ändere
Clive

Das Problem stellte sich als eine Kombination von Dingen auf meinem lokalen Computer heraus, die das eigentliche Problem verbargen. Entschuldigen Sie, dass Sie Ihre Zeit verschwendet haben. Nochmals vielen Dank für die Antwort
Clive
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.