Contao-Camp 2024
Ergebnis 1 bis 20 von 20

Thema: Cache deaktivieren

  1. #1
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard Cache deaktivieren

    Gibt es denn keine Möglichkeit den Cache beim Entwickeln 100%ig zu deaktivieren?

    Selbst wenn ich die "app_dev.php" in der URL verwende werden offenbar immer wieder Änderungen im Code gecached.
    (Zb. die Änderung eines Klassen-Namens.)

    ... das nervt unglaublich, da man zumeist natürlich zuerst einen Fehler im Code vermutet.
    Bitte um eure Expertise wie ihr das handhabt.

    Danke,
    lg

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Präzisiere die Frage. Was genau hast du geändert? Du sagst, du hast einen Klassen Namen geändert. Also das heißt, du hast die PHP Datei umbenannt und die Klasse darin umbenannt? Und was für ein Fehler tritt dann auf?

    Änderungen an Klassen bzw. neu hinzugekommen Klassen werden vom composer autoloder nur dann on-the-fly erfasst, wenn du nicht die Option --optimize-autoloader (-o) benutzt hast.

  3. #3
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Also das heißt, du hast die PHP Datei umbenannt und die Klasse darin umbenannt?
    Genau, das hab ich gemacht.

    Und was für ein Fehler tritt dann auf?
    Die Klasse wird nicht mehr erkannt bzw. liefert nichts mehr zurück.


    Wo kann ich die Option --optimize-autoloader (-o) deaktivieren?

    ... die "autoload.php" kommt ja bei Contao 4 nicht mehr zur Verwendung, oder?

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Zitat Zitat von thesweetg Beitrag anzeigen
    Wo kann ich die Option --optimize-autoloader (-o) deaktivieren?
    "Deaktivieren" tust du es, in dem du
    Code:
    composer dump-autoload
    oder
    Code:
    composer install
    oder
    Code:
    composer update
    ohne diese Option aufrufst.

  5. #5
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    OK, ich glaub ich habs kapiert.
    D.h. man kann den Cache nicht zu 100% deaktivieren.

    Wenn ich bestimmte Änderungen im Code mache (zb. die Änderung eines Klassennamens) dann muss ich ins Terminal um den Cache zu löschen.
    Ist das richtig so?

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Zitat Zitat von thesweetg Beitrag anzeigen
    OK, d.h. man kann den Cache nicht zu 100% deaktivieren.
    Welchen Cache meinst du? Das mit der PHP Klasse hat nichts mit einem "Cache" zu tun, sondern mit dem autoloading des composers.


    Zitat Zitat von thesweetg Beitrag anzeigen
    Wenn ich bestimmte Änderungen im Code mache (zb. die Änderung eines Klassennamens) dann muss ich ins Terminal um den Cache zu löschen.
    Ist das richtig so?
    Nein, das ist grundsätzlich nicht notwendig.

  7. #7
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Welchen Cache meinst du? Das mit der PHP Klasse hat nichts mit einem "Cache" zu tun, sondern mit dem autoloading des composers.
    Ich bin da leider nicht sehr firm, was autoloading und caching betrifft.
    Ich möchte einfach nur das meine Änderungen am Code sofort übernommen werden.
    Ohne das ich im Terminal etwas ausführen muss.

    Geht das?

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Ja das geht prinzipiell. Voraussetzung ist, dass du die oben ausgeführten Kommandos ohne der --optimize-autoloader Funktion ausgeführt hast und auch die app_dev.php benutzt (das deaktiviert die eigentlichen Caches).

    Es gibt aber ein paar Ausnahmen: wenn du bspw. den Namespace oder Namen eines Contao Manager Plugins änderst, musst du ein composer update oder composer install ausführen - ansonsten ist der geänderte Namespace bzw. Klassenname der Contao Managed Edition nicht bekannt.

  9. #9
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    OK, danke für die Info.

    Über diese Ausnahmen bin ich gestolpert.
    D.h. in Zukunft muss ich nach jeder Änderung eines Klassennamens in's Terminal.


    Eine andere Frage hätte ich noch:
    Das "app_dev.php" in der URL macht das Backend zäh wie Kaugummi.
    Gibt es eine andere Möglichkeit den Cache abzuschalten?

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Zitat Zitat von thesweetg Beitrag anzeigen
    D.h. in Zukunft muss ich nach jeder Änderung eines Klassennamens in's Terminal.
    Nein, musst du nicht (bis auf ein paar Ausnahmen).


    Zitat Zitat von thesweetg Beitrag anzeigen
    Das "app_dev.php" in der URL macht das Backend zäh wie Kaugummi.
    Gibt es eine andere Möglichkeit den Cache abzuschalten?
    Nein, gibt es nicht. Du kannst aber gewisse Debug Features abschalten. Siehe https://community.contao.org/de/show...l=1#post445678

  11. #11
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Danke für den "Debug Features"-Tip, sehr nützlich.


    Ich stoße auf das Cache-Problem, selbst wenn ich einen einfachen Klassennamen ändere.

    Ich hab hier zb. mein Contao-4 Dummy-Bundle:
    https://packagist.org/packages/georgpreissl/dummyx

    Wenn ich bei diesem Bundle die Klasse "MyMessage" auf bwsp. "MyMessageNew" ändere (sowohl den Dateinamen als auch den Klassennamen), dann wird mir im Backend das Template nicht mehr ausgegeben.
    Erst wenn ich im Terminal "composer install" ausführe, klappts wieder.
    ... ich nehme an das ist eine dieser angesprochenen Ausnahmen, oder?

  12. #12
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Wenn du den Klassennamen änderst, musst du auch das hier ändern: https://github.com/georgpreissl/dumm...config.php#L42

    Und das wiederum sollte ohne "composer install" funktionieren.

  13. #13
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wenn du den Klassennamen änderst, musst du auch das hier ändern: https://github.com/georgpreissl/dumm...config.php#L42
    Hatte ich so gemacht.
    Das Bundle funktioniert dann ja auch, aber immer erst nach einem "composer install".

  14. #14
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Und du führst composer install ohne -o aus?

  15. #15
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Ja, nur "composer install".

    Hab hier einen kurzen Screencast gemacht der das Problem zeigt:
    https://youtu.be/ICreofYcCno

    Mich würd interessieren ob das nun ein normales Verhalten ist oder ob ich was falsch konfiguriert habe.

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Vermutlich verwendest du classmap autoloading statt psr-4. Mit classmap autoloading funktioniert das nicht.

  17. #17
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    Zitat Zitat von thesweetg Beitrag anzeigen
    Das "app_dev.php" in der URL macht das Backend zäh wie Kaugummi.
    Es wäre schön, wenn ein deaktivierter Cache auch ohne app_dev.php möglich wäre. So wie es früher mal war, als man im BE einfach den Cache deaktivieren konnte. Mit app_dev.php, was ich höchstens brauche um den PHP-Fehler ganz oben zu sehen, wird die Website sehr langsam und ich hatte auch schon unschöne Nebeneffekte bei selbstzusammengebauten URL's, weil sich da die URL-Parameter verschoben haben.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Es wäre schön, wenn ein deaktivierter Cache auch ohne app_dev.php möglich wäre. So wie es früher mal war, als man im BE einfach den Cache deaktivieren konnte. Mit app_dev.php, was ich höchstens brauche um den PHP-Fehler ganz oben zu sehen, wird die Website sehr langsam und ich hatte auch schon unschöne Nebeneffekte bei selbstzusammengebauten URL's, weil sich da die URL-Parameter verschoben haben.
    https://community.contao.org/de/show...l=1#post498692

  19. #19
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Vermutlich verwendest du classmap autoloading statt psr-4. Mit classmap autoloading funktioniert das nicht.
    OK, danke für den Hinweis.
    D.h. wenn ich hier:

    Code:
    {
    	"name": "georgpreissl/dummyx",
    	"homepage":"https://github.com/georgpreissl/dummyx",
    	"description": "Contao Dummy Bundle X",
    	"keywords":["contao","dompdf","pdf"],
    	"type": "contao-bundle",
    	"license": "LGPL-3.0+",
    	"authors": [
    		{
    			"name": "Georg Preissl",
    			"homepage": "https://georgpreissls.com",
    			"role":"Developer"
    		}
    	],
    	"support":{
    			"email":"hallo@georgpreissls.com",
    			"issues":"https://github.com/georgpreissl/contao-dompdf-bundle/issues",
    			"source":"https://github.com/georgpreissl/contao-dompdf-bundle"
    	},
    	"require": {
    		"php": ">=5.6.0",
    		"contao/core-bundle": "^4"
    	},
    	"require-dev": {
    		"contao/manager-plugin": "^2.0"
    	},
    	"conflict": {
    		"contao/manager-plugin": "<2.0 || >=3.0"
    	},
    	"autoload": {
    		"psr-4": {
    			"GeorgPreissl\\DummyX\\": "src/"
    		},
    		"classmap": [
    			"src/Resources/contao/"
    		],
            "exclude-from-classmap": [
                "src/Resources/contao/config/",
                "src/Resources/contao/dca/",
                "src/Resources/contao/languages/",
                "src/Resources/contao/templates/"
            ]		
    	},
    	"extra": {
    		"contao-manager-plugin": "GeorgPreissl\\DummyX\\ContaoManager\\Plugin"
    	}
    }
    ... "classmap" rausnehme müsste es funktionieren?
    ("exclude-from-classmap" macht dann auch keinen Sinn mehr nehme ich an.)

  20. #20
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Ja, du nimmst alle diese classmap Dinge raust und schiebst deine Klassen in den passenden Namespace.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •