Generierung als Hintergrundprozess
Dateien, die über den herkömmlichen Upload in die Brandbox eingebunden werden, erhalten Einträge in der Tabelle ThumbnailQueue. In dieser Tabelle Einträge abgelegt, die stets eine Datei referenzieren. Darüber hinaus enthält jeder Datensatz diverse Optionen, mit denen ein Thumbnail generiert werden soll. Diese Tabelle wird von einem CronJob auf zu generierende Thumbnails geprüft. Durch diesen CronJob werden die Thumbnails passiv im Laufe der Zeit generiert. Diese Vorgehensweise sorgt dafür, dass der Upload sich tatsächlich hauptsächlich mit dem Upload der Datei kümmert. Teilaufgaben wie das Ermitteln von Metadaten, das Generieren von Vorschaubildern etc. soll in separaten Prozessen abgearbeitet werden, damit die Vorgänge performant bleiben.
Befüllen der Warteschlange
Die Warteschlange wird durch ein Event befüllt, welches durch die Methode \Brandbox\Framework\Base\File\Manager::populateThumbnailQueue
ausgelöst werden kann. Dabei handelt es sich um das Event \Brandbox\Framework\Base\File\lib\event\OnPopulateThumbnailQueue
. Diese Methode wird bei einem erfolgreichen Upload ausgelöst, sodass die Listener die Warteschlange mit entsprechenden Optionen befüllen können. Das Framework nutzt dieses Event um die Thumbnailkonfigurationen für die Listenansicht- und Kartenansicht in Base in der Warteschlange zu ergänzen. Um die Warteschlange mit Einträgen von Dateien zu füllen, die noch keine Thumbnails oder Einträge in der Warteschlange besitzen, kann die Methode \Brandbox\Framework\Base\File\Manager::queueFilesWithoutThumbnails
genutzt werden.
Öffentliche Thumbnails über URLs
Die bisher beschriebene Logik generiert Thumbnails und liefert diese üblicherweise Base64-kodiert an den Browser aus. Das bringt mit sich, dass Thumbnails üblicherweise nicht direkt über einen Link aufrufbar sind, aber dafür ist der initiale Seitenaufbau abhängig von diesen Thumbnails. Bei vielen oder großen Thumbnails wird die Dauer bis zum vollständigen Seitenaufbau entsprechend erhöht. Das wiederum kann schlechte Auswirkungen auf diverse Ratings zu Webseiten haben. Um dieses Verhalten zu vermeiden, gibt es die Möglichkeit Thumbnails in einem öffentlich zugänglichen Bereich abzulegen und somit die Ladezeiten zu verkürzen. Die Pfade zu den Thumbnails werden in den src
-Parametern der image
-Elemente hinterlegt. Der Browser baut die Seite somit unabhängig der Bilder auf. Die Bilder werden separat bezogen.
Konfiguration
Diese öffentlichen Thumbnails können genutzt werden, indem man die Checkbox "Öffentlich freigeben
" bei den gewünschten Dateien (mamFile) auswählt. Werden nun Thumbnails einer solchen Datei abgefragt, werden sie zunächst in einem öffentlichen Verzeichnis abgelegt und der Pfad zu dieser Datei wird an den Browser übermittelt. Diese Thumbnails liegen in dem Verzeichnis "temp/public/framework/images/
". Je nach Datei werden gehashte Unterverzeichnisse erstellt. Wird die Checkbox bei einer Datei wieder abgewählt, werden die Dateien automatisch gelöscht. Darüberhinaus werden die öffentlichen Thumbnails einer Datei auch gelöscht, wenn die Datei selbst gelöscht wird.