Digital Asset Management in Flow und Neos CMS - Teil 1

Neos hat einige leistungsstarke Funktionen unter der Haube, die die Verwaltung von Mediendateien und Dokumenten vereinfachen. Dieser Beitrag ist der erste Teil einer Serie über das Asset Management in Neos CMS und Flow und erklärt die Basis des Ganzen, die Flow Ressourcenverwaltung.

Kennst du den Unterschied zwischen Flow Ressourcen, Neos Media Assets und Assets, die von Neos CMS verwaltet werden? Lass uns zuerst diese Dinge klären, bevor wir uns in einem späteren Teil dieser Serie mit den brandneuen Cloud-Funktionen beschäftigen.

Flow Ressourcenmanagement

Wenn du Anwendungen mit dem Flow Framework erstellst, wirst du mit der Flow Ressourcenverwaltung in Berührung kommen. Als wir vor vielen Jahren über die Basisfunktionalität von Flow nachdachten, habe ich eine Abstraktionsschicht für Dateien geschaffen: Anstatt direkt mit Dateinamen und Pfaden zu arbeiten, arbeiten Entwickler mit Objekten (du wirst später sehen, welchen Vorteil das für Cloud-Umgebungen hat). Aber egal, ob du an einer Flow Anwendung arbeitest oder Neos CMS als Website-Integrator nutzt, die Grundlage von allem ist die Ressourcenverwaltung vonFlow.

Beginnen wir damit, ein paar Begriffe zu definieren, die in Flow häufig verwendet werden:

Ressource

Eine Ressource ist das "Atom", der kleinste Teil eines Assets; sie ist die Darstellung der binären Daten, die normalerweise als Datei gespeichert werden. Das heißt, eine Ressource ist das Objekt, das die binären Daten, die du oder deine Nutzer hochladen oder importieren, direkt repräsentiert. In Ressourcenobjekten werden keine Metadaten gespeichert, nur das Nötigste (Dateiname, Typ, Änderungsdatum und Größe).

Es ist ratsam, Ressourcenobjekte nicht mit mehreren Eltern zu teilen. Das bedeutet: Wenn du ein "Konferenz"-Objekt hast, das eine "Logo"-Eigenschaft hat (die ein Ressourcenobjekt ist), solltest du dieses Ressourcenobjekt nicht für eine zweite Konferenzinstanz wiederverwenden. Kopiere es einfach, importiere es erneut oder lade es erneut hoch. Flow sorgt dafür, dass kein Speicherplatz verschwendet wird und speichert die Binärdaten nur einmal, egal wie viele Ressourcenobjekte sie verwenden.

Statisch vs. Persistent

Statische Ressourcen werden als Teil der Codebasis bereitgestellt. Sie ändern sich während der Laufzeit nicht. Eine persistente Ressource sind Daten, die von der Anwendung hochgeladen, erstellt oder importiert werden. Jede Ressource wird in der Datenbank registriert.

Speicherung

Die Binärdaten einer Ressource werden in einem Low-Level-Speicher gespeichert. Die Ressourcen eines Speichers sind nicht öffentlich verfügbar und nur programmatisch über deine Anwendung zugänglich.

Veröffentlichungsziel

Ressourcen werden in Veröffentlichungszielen veröffentlicht. Das Veröffentlichungsziel bietet eine öffentliche URL für eine oder mehrere Ressourcen.

Ressourcenkollektionen

Jede Ressource gehört zu einer Collection. Eine Collection definiert das Speicher- und Veröffentlichungsziel, das für die enthaltenen Ressourcen verwendet wird.

Alternative Speicherorte und Veröffentlichungsziele

Wenn du wie wir Neos in einer skalierbaren Cloud-Umgebung betreibst, möchtest du hochgeladene Ressourcen nicht in einem Dateisystem speichern. Wenn eine Anwendung ein persistentes Dateisystem benötigt, kann die Skalierung - und generell die Verwendung von Containern - sehr viel schwieriger werden. Zum Glück gibt es Alternativen, und sowohl Neos als auch Flow kommen ohne eine persistente Festplatte unter den Füßen sehr gut zurecht.

Es gibt zwei Plugins von Flownative, die du fast als Ersatz für die Standard-Storages und Targets verwenden kannst:

Low-Level-Tools für die Ressourcenverwaltung

Wenn deine Daten beschädigt sind oder du einfach nur überprüfen willst, ob alles in Ordnung ist, gibt es ein paar Low-Level-Tools, die dir beim Aufräumen deiner Anwendung helfen können.

Zunächst einmal prüft ./flow resource:clean , welches Ressourcenobjekt existieren sollte, indem es die in der Datenbank gespeicherten Einträge durchgeht. Der Befehl vergleicht dann die Liste der Ressourcen mit den tatsächlich gespeicherten Binärdaten und schlägt vor, die veralteten Einträge aus der Datenbank zu entfernen, wenn eine der Ressourcen fehlt. Je nachdem, ob es zusätzliche Abhängigkeiten von diesen Ressourcenobjekten gibt, kann die Bereinigung fehlerfrei verlaufen oder nicht.

Wenn einige Daten beschädigt sind oder fehlen, solltest du auf jeden Fall genauer untersuchen, warum das überhaupt passiert ist. Verlasse dich nicht auf die Bereinigungstools, sondern stelle sicher, dass diese Dinge nicht passieren können.

Dann gibt es einen weiteren Befehl namens./flow resource:copy mit dem du Binärdaten von einer Sammlung (d.h. dem Speicher einer Sammlung) in eine andere kopieren kannst. Dieser Befehl ist sehr praktisch, wenn du zu oder von einem entfernten Speicher, wie z. B. Google Cloud Storage, migrieren willst. In der Dokumentation Flownative S3 und GCS Plugin findest du einige Beispiele für die Verwendung dieses Befehls.

Weiter: Bilder, Varianten, Vorschaubilder und animierte GIFs

Jetzt hast du einen grundlegenden Eindruck davon, was auf der untersten Ebene vor sich geht. Im nächsten Teil dieser Serie schauen wir uns Neos.Media an, das Paket, das leistungsstarke und einfach zu bedienende Möglichkeiten für den Umgang mit Bildern, Dokumenten, Miniaturansichten und mehr bietet.

Gefällt dir der Ansatz, Vermögenswerte in einem unendlich skalierbaren Cloud-Speicher zu speichern, aber scheust du den Aufwand, alles einzurichten? Dann könnte Flownative Beach , unsere Cloud-Plattform, etwas für dich sein. Sie wurde von Grund auf für Neos und Flow entwickelt und nimmt dir den ganzen Ärger mit der Cloud ab. Erfahre mehr über Beach