Ich verwende Elastic Beanstalk und stelle meine Anwendung mit CodeCommit und CodePipeline bereit. Ich verwende Smarty für das Templating. Um die Neukompilierung aller Vorlagen bei der Bereitstellung einer neuen Version meiner Anwendung zu vermeiden, möchte ich die kompilierten Vorlagendateien außerhalb des Verzeichnisses /var/app/current/
aufbewahren, wo sie bei jeder Bereitstellung entfernt werden.Smarty-Dateien werden nicht mit Elastic Beanstalk, CodePipeline und CodeCommit neu kompiliert.
Aber wenn ich dies tue, aktualisiert Smarty die kompilierten Vorlagendateien nicht, wenn die ursprünglichen Vorlagendateien aktualisiert werden. Ich habe untersucht, um die Ursache herauszufinden, und wenn ich meine ursprünglichen Vorlagedateien auf den EC2-Instanzen ansehe, haben sie alle ein Datum der letzten Änderung von 1979-12-31 05:08:00.
Es scheint, dass Elastic Beanstalk das Änderungsdatum der Dateien bei der Bereitstellung nicht bewahrt. Vielleicht gehen die ursprünglichen Änderungsdaten in CodeCommit oder CodePipeline verloren?
Meine Vermutung ist, dass Smarty das Änderungsdatum der Dateien untersucht, um festzustellen, ob die kompilierten Dateien aktuell sind oder nicht. Und da die kompilierten Vorlagen neuer als die ursprünglichen Vorlagen sind, werden sie als aktuell angesehen, auch wenn sie nicht vorhanden sind.
Irgendwelche Ideen, wie ich dieses Problem lösen kann, außer das Löschen der kompilierten Vorlagen mit jeder neuen Bereitstellung? Gibt es eine Möglichkeit, Elastic Beanstalk die Modifikationszeiten beizubehalten? Oder gibt es eine Möglichkeit Smarty zu verstehen, dass eine Vorlagendatei neben dem Änderungsdatum der Datei aktualisiert wurde?