Der Media-Manager in J4 ist suboptimal (Timestamp bei Bilder)

  • Joomla Version
    4.3.1
    PHP Version
    PHP 8.1.x
    Hoster
    lokal

    Hallo liebes Forum,


    ich bin gerade wieder einmal unterwegs und verzweifle mit dem Media-Manager von Joomla. Zuhause ist mit das bisweilen nicht aufgefallen, doch jetzt,wo es um den mobilen Traffic geht, sehe ich etwas, dass so nicht sein sollte.


    In J3 hatte ich per .htaccess angewiesen, dass die Bilder im Backend im Cache des Browsers verweilen sollen. Das spart in einem Verzeichnis von mehr als 300 Bilder enormen Traffic und Zeit.


    In J4 aber ist man auf die Idee gekommen, einen Timestamp hinter die Bilder zu kloppen und so werden jedes Mal 300 MB an Daten gezogen. Unterbrechen kann man den Vorgang erst, wenn die Bilder geladen sind. Ein caching der Bilder ist somit nicht möglich. Das ist echt übel und an manchen Orten mit schwachen Empfang der reinste Horror. Daher die Frage an euch, wie man hier kurzfristig für Abhilfe sorgen kann?


    Code
    <div class="image-background"><img class="image-cropped" src="https://www.de/images/verzeichnis/bild.jpg?1684227749408" alt="dateiname.jpg" loading="lazy" width="800" height="450"><!--v-if--></div>
  • EDIT: Indigo66 : Zumindest im Backend sehe sich das auch, dass die MediaVersion jedesmal ersetzt wird, aber ????.

    einen Timestamp hinter die Bilder zu kloppen

    wie man hier kurzfristig für Abhilfe sorgen kann?

    Ohne Garantie, ob dann das rauskommt, was du bezweckst. weiß nur, dass so die mediaVersion, die aktueller Zeitstempel (warum auch immer ist) mit Desktop-Firefox ausgetauscht wird. Keine Ahnung welche Browser nun welche JS-Dateien ziehen.


    - Kopiere Datei media\com_media\js\media-manager.js

    - nach media\templates\administrator\atum\js\media-manager.js

    - Füge in Datei administrator\templates\atum\joomla.asset.json am Ende hinzu (siehe auch Bilder) und ändere "uri" entsprechend:

    - Passe Zeile 7266 an:

    Code
        // this.mediaVersion = new Date().getTime().toString();
            this.mediaVersion = 'hallalie';

    - Alternativ Zeile 8327

    Code
    ? `${this.item.thumb_path}?${api.mediaVersion}`

    nach

    Code
    ? `${this.item.thumb_path}?hallalie`




    Wenn du den eintrag aus der joomla.asset.json wieder entfernst, sollte alles wieder beim ALten sein.

    Updatesicher ist das vermutlich nicht, weil die atumn joomla.asset.json nach jedem Joomla-Update wohl ersetzt wird. ABer man kann sich wohl den Austausch der JS jedesmal sparen(????)


  • In der Vergangenheit gab es immer wieder Nutzerbeschwerden, weil Änderungen an Bestandsbildern (Bild ersetzt, Größe angepasst etc) im Backend nicht sofort sichtbar wurden, weil besagte Bilder im Browser-Cache waren. Der Timestamp hebelt den Cache aus um das Problem zu lösen.


    Grundsätzlich also durchaus eine gute Idee, eventuell aber wäre es sinniger, den Timestamp an das modification Date der Datei zu binden.

  • Ok, kurzes Feedback - die Lösung ist nicht Upgradekompatibel, es muss lediglich Schritt 1 von Beitrag #3 wiederholt werden. Mehr nicht.


    SniperSister Ich sag mal so - damit die Bilder im Browser Cache landen, muss man in der .htaccess eine explizite Anweisung erfolgen. Wenn ein Nutzer dazu in der Lage ist, kann er - wenn er denn will, dass für das Backend ausschließen.

    Für mich ist es weiterhin keine gute Lösung, so wie es gelöst ist und ich kann mir gut vorstellen, dass sich viele einfach nur wundern, warum das so langsam ist.


    Ich glaube, dass ist mit ein Ticket wert - und ich werde deinen Vorschlag einmal aufgreifen, dass der Timestamp nur dann gesetzt werden soll, wenn das Bild auch tatsächlich verändert wurde. Dann macht es wirklich Sinn!

  • Ok, ich werte das einmal als Bug und nicht als Verbesserungsvorschlag, da Einstellungen in der .htaccess ignoriert werden.

    SniperSister: ich habe deinen Vorschlag einmal mit eingebracht:

    Media Manager bypasses browser cache (.htaccess) · Issue #40787 · joomla/joomla-cms
    Steps to reproduce the issue Create a folder with more than 500 images in the Joomla Media Manager. Add the following to the .htaccess: Oops, I can't insert…
    github.com

  • Hallo,

    Wenn ich das machen möchte, müsste ich im Backend der temporären Seite doch nur die Update Quelle auf "Testing" umstellen?

    Du kannst den PR https://issues.joomla.org/tracker/joomla-cms/40893 nicht mit dem normalen "Patchtester" testen, weil dieser PR NPM Change ist.


    Gehst hier her:


    ladest das Paket herunter + installieren (siehe Details).


    Den Server musst umstellen auf:

    Prebuilt Pull Request Download Packages for PR 40893


    Liebe Grüße

    Christine