Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Medienverwaltung - Verwendung von einem Verzeichnis oder mehreren Unterord

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Medienverwaltung - Verwendung von einem Verzeichnis oder mehreren Unterord

    Guten Abend zusammen,

    aktuell arbeite ich an einem CMS mit 12 Mandanten und dazu muss die Medienverwaltung (speziell Bilder) optimiert werden. Die Systeme sind alle mehrsprachig und greifen alle auf diese eine Medienverwaltung zu. Somit muss hier eine Struktur her, damit jeder Mandant seine eigenen Verzeichnisse erhält und man ggfs. einen allgemeinen Ordner anlegen kann.

    Nun habe ich überlegt, dass alle Bilder wie folgt gespeichert werden:

    Vorgehen #1
    /out/images/[Verzeichnis vom Kunden benannt]/[Verzeichnis vom Kunden usw.]/[bildgrößen]/dateiname.endung

    Vorteil:
    - Auch bei mehreren Tausend Bildern ist ein Ordner nicht überfüllt und könnte zu langsam werden
    - Bilder können in verschiedenen Kategorien den selben Namen haben, aber dennoch überschrieben werden. (Medieninformationen in der DB bleiben somit erhalten)

    Nachteil:
    - Verzeichnisse und Dateien haben immer den deutschen Namen und werden auch so ausgeliefert. Evtl. Seo-Technisch nicht so optimal?
    - Umbenennung der Kategorien etwas aufwändiger, da beim umbenennen auch alle Meta-Informationen in der Datenbank auf den neuen Pfad aktualisiert werden müssen.

    Vorgehen #2
    /out/images/[bildgrößen]/dateiname.endung

    Vorteile:
    - Struktur kann komplett über die Datenbank laufen. -> Virtuelle Verzeichnisse.

    Nachteile:
    - Eventuell Perfomance Probleme bei zu vielen Bildern?
    - Aufwändiger doppelte Dateinamen zu überprüfen und die Dateien zu überschreiben, da Dateien mit dem selben Dateinamen eventuell in verschiedenen virtuellen Verzeichnissen liegt und somit nicht überschrieben werden sollen.
    - Keine SEO URL des Bildes und ebenfalls immer in Deutsch.


    Allgemeine Vorteile:
    - Datei kann direkt an den Browser ausgeliefert werden, ohne dass ein Script vorgeschaltet werden muss.

    [B]Zusatz Option/B]
    Datei anhand des Pfads/hash/id aus der Datenbank auslesen und daraus einen SEO-Link generieren der für jede Sprache unterschiedlich ist.
    Vorteile:
    - Speicherort der Bilder spielen keine Rolle mehr
    - Bilder können jeden möglichen Namen annehmen

    Nachteile:
    - Es muss immer ein Script vorgeschaltet werden, welches die Bilder ausliest.
    - Schlechte Perfomance durch vermeidbare Datenbankabfragen und nutzen des PHP-Interpreters statt abwicklung über NGINX/Apache


    Nun meine Fragen:
    Welches vorgehen ist optimal? Welche Vor- und Nachteile habe ich vergessen?
    Wie lösen es andere große Systeme?
    Beispiel OXID oder Wordpress: Die setzen alles in einen Ordner. (Außer man aktiviert die Datumsordner bei WP. Bei Oxid wird es noch in Kategorie und hauptbild1,hauptbild2 etc. unterteilt)

    Muss man auf die mehrsprachige URL Rücksicht nehmen?

    Danke und viele Grüße

  • #2
    Ich behaupte, die Anzahl Dateien in einem Ordner als "Performance-Problem" zu bezeichnen ist gewagt. Die maximale Anzahl Dateien pro Ordner ist unvorstellbar gross und im Endeffekt ist wohl bis 10'000 Bilder pro Ordner kein Nachteil zu erkennen. Du nennst jedoch auch keine Dimension.

    Das grösste Problem, das ich sehe ist, dass deine Ordner nicht Mandantenspezifisch sind. Ich würde für jeden Mandanten eine eigene Struktur aufbauen. Ob SEO für ein Bild ein Argument ist... Dazu nennst du keinen Anwendungsbereich - in der Medienbranche vielleicht, als Zeitung wohl eher kaum.

    Auch ob eine Datenbankabfrage ein Performance-Problem birgt ist schwierig zu beurteilen. Ausgehend von 100'000 Bildern mit 1'000 Requests pro Stunde wird das bei einem vernünftigen Index und passender Hardware den Server eher langweilen.
    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

    Kommentar


    • #3
      Hi,

      danke erstmal für die schnelle Antwort.
      Deswegen frage ich, da ich noch keine Erfahrung mit Verzeichnissen mit über 10.000 Bildern oder Dateien habe. Dieses Projekt könnte diese Anzahl nun aber sicherlich sprengen.
      Also ist dort die Perfomance nebensächlich geworden.

      Wie würdest du das Problem mit dem überschreiben der Dateien angehen, wenn die alle in einem Verzeichnis liegen?

      Stimmt, die Verzeichnisse Mandatenmäßig aufzuteilen habe ich vergessen aufzunehmen. Wäre klar, dass jeder Mandant somit seine eigene Struktur erhält.

      ich weiß leider noch nicht, was der Kunde für einen Server erhalten wird. Vermutlich wird er wie immer, nicht den nehmen den wir empfehlen und somit kann man davon ausgehen, dass es ein relativ schwacher vServer werden wird. Aber korrekt konfiguriert sollte dieser, wie du schon sagtest, echt keine Probleme bekommen, die Dateien aus der Datenbank abzufragen.

      Kommentar


      • #4
        aktuell arbeite ich an einem CMS mit 12 Mandanten
        ich weiß leider noch nicht, was der Kunde für einen Server erhalten wird. Vermutlich wird er wie immer, nicht den nehmen den wir empfehlen ...
        somit kann man davon ausgehen, dass es ein relativ schwacher vServer werden wird
        Also ganz ehrlich - ich möchte ja nicht unfair sein aber das liest sich wiedersprüchlich! Wenn ein Kunde bzw. mehrere Geld haben für ein CMS das du für Sie auf Ihre Bedürfnisse entwickelst dann sollte da auch Geld für eine ordentliche Infrastruktur das sein. Oder arbeitest du für nen 10er die Stunde?

        Im Zweifel hat nicht der Kunde einen Server zu erhalten (außer diesen ranzuschaffen ist Teil deines Auftrags) sondern du definierst die Anforderungen und mindesntens die haben erfüllt zu werden!

        Nachdem nicht bekannt ist, wofür dein CMS eingesetzt wird könnte ich mir auch folgende Lösung vorstellen:

        Code:
        /out/images/<Mandant>/X/
        Je Mandanten gibt es einen Ordner, X steht für eine Zählervariabele - je 5000 Bilder z.B. machst du einfach einen neuen Ordner auf. Das läuft dann so wie du es schon vorgeschlagen hast über ein Virtuelles Filesystem d.h. du machst das Mapping auf Kategorien usw. in der Datenbank.

        Für die Dateinamen-Problematik hätte ich auch eine Lösung, der einzige Nachteil daran wäre im Grunde das du die SEO-Wirkung der Dateinamen verlierst. Ich würde unique-Dateinamen z.B. aus einem md5 oder sha-Hash des Orginal-Dateinamen generieren und ggf. noch time() o.ä. anhängen. Damit hast du endzigartige Namen.
        Gruß,
        SebTM

        Kommentar


        • #5
          Die Anforderungen an den Server sind selbstverständlich definiert. Nur hat der Kunde selbst die Wahl zu welchen Provider er gehen wird. Und auch wenn man Ihm mitteilt: Wir brauchen mindestens x Kerne, X Ram, einen eigenen Datenbankserver im selben Netz etc. Bin ich da der einzige, der Kunden hat, die dass gekonnt ignorieren und selber denken, dass die wissen was die machen und deswegen an der falschen Stelle sparen und einen billigen Server mieten? - Schweift aber auch etwas vom Grundthema ab.

          Also ich lese nun heraus, dass es eig. keinen unterschied macht, ob ich die Bilder in Unterordner aufteile oder doch ein großes Verzeichnis nehme.

          Die SEO-Problematik, wenn es eine gibt, kann ja immer über die Rewrite Regeln, mit vorgeschalteten PHP-Script, gelöst werden.

          Kommentar


          • #6
            Sinnvoll ist es sicher, dass so gut wie möglich in Verzeichnisse aufzuteilen. Dass du ein zusätzliches virtuelles Dateisystem benötigst ist fast logisch (und normal). Ich organisiere das meist so, dass jeweils Zeichen 1 und 2 den ersten Verzeichnisnamen und 3 und 4 den Unterordner darin. Als Namen kannst du eine UUID nehmen, ist fast besser als ein Hash. Und ja, mittels mod_rewrite könntest du noch ein schönes SEO dazu machen.

            Das kennt wohl jeder, liegt in der Verantwortung des Kundens wenn er den Server selber wählen darf. Er darf dann aber auch nicht meckern wenn es lahmt ...
            [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

            Kommentar


            • #7
              Lösen es nun mit den Unterordnern. Also Dateiname A kommt in das Verzeichnis A. Die Struktur und Medieninformation liegt vollständig in der Datenbank.
              Unser SEO-Experte erwähnte, dass es von Vorteil sein kann, wenn man auch die Bildnamen sprechend gestaltet. Hierzu wird wie erwähnt ein Script vorgeschaltet, welches anhand der SEO-URL des Bildes das korrekte Bild wieder ausliefert.

              Vielen Dank für eure Antworten.

              Kommentar


              • #8
                Zitat von phpler5541 Beitrag anzeigen
                Unser SEO-Experte erwähnte, dass es von Vorteil sein kann, wenn man auch die Bildnamen sprechend gestaltet.
                Mich hat diese Empfehlung auch schon von einen SEO-Kasper erreicht. Gibt es dafür auch Quellen, die das belegen?

                Kommentar

                Lädt...
                X