Regina Schlauklug: Absolute Dateipfade

Moinsen,

angenommen einen html-Seite wird bei A gehostet. Die verlinkten Dateien (Bilder etc.) beim Provider B. Problem: Der Host B ist in Bangladesh und die URL zum Bilderordner ungefähr zwei Meter lang. Ausserdem könnte es sein, das man das alles mal umziehen muss zu einem Host C.

Wäre es da nicht sinnvoll, man könnte die URL zu allen externen Dateien zentral in der .html oder .css definieren, sodaß an sie beim Umzug nur an einer Stelle ändern muss, nicht alle 253 Links in der .html.

Hat einer ne Idee oder Lösung. Das Internet hat nix diesbezüglich rausgeworfen ...

  1. Tach,

    Wäre es da nicht sinnvoll, man könnte die URL zu allen externen Dateien zentral in der .html oder .css definieren, sodaß an sie beim Umzug nur an einer Stelle ändern muss, nicht alle 253 Links in der .html.

    für HTML gibt es im Prinzip das base-Element, aber eine gute Idee ist dessen Verwendung i.A. nicht (ein Äquivalent für CSS gibt es nicht, in Javascript kann man das über eine Variable lösen); ich würde im Prinzip immer auf eine serverseitige Technik setzen.

    mfg
    Woodfighter

    1. @@woodfighter

      für HTML gibt es im Prinzip das base-Element, aber eine gute Idee ist dessen Verwendung i.A. nicht

      Zumal das global wirkt, also u.U. auch auf Links, wo man das nicht möchte,

      ich würde im Prinzip immer auf eine serverseitige Technik setzen.

      Also alle Bilder so referenzieren, als wären sie in der eigenen Domain (z.B. http:example.net/images/kitten.jpg) und für http:example.net/images/ eine Weiterleitung auf das tatsächliche Verzeichnis beim anderen Hoster?

      LLAP 🖖

      --
      “You might believe there are benefits for the developer, but first of all, you should put those behind the interest of the user.” —Stefan Tilkov
      Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
      1. Tach,

        ich würde im Prinzip immer auf eine serverseitige Technik setzen.

        Also alle Bilder so referenzieren, als wären sie in der eigenen Domain (z.B. http:example.net/images/kitten.jpg) und für http:example.net/images/ eine Weiterleitung auf das tatsächliche Verzeichnis beim anderen Hoster?

        nein, Basis-URI als Variable und an passender Stelle ausgeben. Weiterleitungen erzeugen nur unnötigen Overhead.

        mfg
        Woodfighter

        1. @@woodfighter

          ich würde im Prinzip immer auf eine serverseitige Technik setzen.

          Also alle Bilder so referenzieren, als wären sie in der eigenen Domain (z.B. http:example.net/images/kitten.jpg) und für http:example.net/images/ eine Weiterleitung auf das tatsächliche Verzeichnis beim anderen Hoster?

          nein, Basis-URI als Variable und an passender Stelle ausgeben. Weiterleitungen erzeugen nur unnötigen Overhead.

          Wenn man bereits eine serverseitige Technik wie SSI oder PHP einsetzt, ja.

          Wenn nicht, erzeugt die Einführung einer solchen nur für diesen Zweck auch Overhead.

          Was wäre in dem Fall weniger Overhead?

          LLAP 🖖

          --
          “You might believe there are benefits for the developer, but first of all, you should put those behind the interest of the user.” —Stefan Tilkov
          Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
          1. Tach,

            Wenn man bereits eine serverseitige Technik wie SSI oder PHP einsetzt, ja.

            Wenn nicht, erzeugt die Einführung einer solchen nur für diesen Zweck auch Overhead.

            Was wäre in dem Fall weniger Overhead?

            es entsteht unterschiedlicher Overhead; einmal beschäftige ich den Prozessor des Webservers mehr und im anderen Falle tue ich das (allerdings vermutlich weniger) und erzeuge mehr Traffic (und/oder ein Cache Problem je nach Weiterleitung). Ich würde erwarten, dass Traffic ein engerer Flaschenhals ist und selbst wenn nicht, ist die zusätzliche Roundtripzeit für den zusätzlichen Request vermutlich länger als die Wartezeit auf das Parsing des Dokuments (das auch noch gecacht werden kann).

            mfg
            Woodfighter

  2. Moin,

    angenommen einen html-Seite wird bei A gehostet. Die verlinkten Dateien (Bilder etc.) beim Provider B.

    dann würde ich mich als allererstes fragen: Warum?? Warum schiebt man nicht die Bilder auch auf den Server von Hoster A rüber und hat dann alles beieinander?

    Problem: Der Host B ist in Bangladesh und die URL zum Bilderordner ungefähr zwei Meter lang.

    Und Hoster B ist vielleicht nicht so zuverlässig, wie man es von europäischen Anbietern gewöhnt ist, und fällt öfters mal für kurze Zeit aus.

    Wäre es da nicht sinnvoll, man könnte die URL zu allen externen Dateien zentral in der .html oder .css definieren, sodaß an sie beim Umzug nur an einer Stelle ändern muss, nicht alle 253 Links in der .html.

    Unter der Prämisse, dass man die Daten wirklich auf unterschiedlichen Servern hat ... ja. Aber genau diese Voraussetzung ist IMO der Punkt, an dem man ansetzen sollte.

    Hat einer ne Idee oder Lösung. Das Internet hat nix diesbezüglich rausgeworfen ...

    Eventuell könnte dir das base-Element helfen. Allerdings nicht für Hintergrundbilder, die via CSS eingebunden werden.
    Alternativ eine serverseitige Sprache (z.B. PHP), die im ausgelieferten Code bestimmte Pseudocodes durch den tatsächlichen Hostnamen ersetzt.

    So long,
     Martin

    --
    Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.
    1. Moin,

      angenommen einen html-Seite wird bei A gehostet. Die verlinkten Dateien (Bilder etc.) beim Provider B.

      dann würde ich mich als allererstes fragen: Warum?? Warum schiebt man nicht die Bilder auch auf den Server von Hoster A rüber und hat dann alles beieinander?

      Zum Bleistift weils ned geht! Ich arbeite z.B. viel mit baseportal. Dort kann ich zwar Textdateien ablegen, aber keine Bilder etc.

      Problem: Der Host B ist in Bangladesh und die URL zum Bilderordner ungefähr zwei Meter lang.

      Und Hoster B ist vielleicht nicht so zuverlässig, wie man es von europäischen Anbietern gewöhnt ist, und fällt öfters mal für kurze Zeit aus.

      Das war ja nur ein plakatives Beispiel - nicht allzu ernst zu nehmen ...

      Wäre es da nicht sinnvoll, man könnte die URL zu allen externen Dateien zentral in der .html oder .css definieren, sodaß an sie beim Umzug nur an einer Stelle ändern muss, nicht alle 253 Links in der .html.

      Unter der Prämisse, dass man die Daten wirklich auf unterschiedlichen Servern hat ... ja. Aber genau diese Voraussetzung ist IMO der Punkt, an dem man ansetzen sollte.

      ... muss in meinem Fall leider so sein. Konkret: .html-Datei liegt bei baseportal auf und nutzt deren Datenbankfunktion, die ext. Dateien liegen beim Internet-Provider.

      Hat einer ne Idee oder Lösung. Das Internet hat nix diesbezüglich rausgeworfen ...

      Eventuell könnte dir das base-Element helfen. Allerdings nicht für Hintergrundbilder, die via CSS eingebunden werden.

      Das ich da nicht selbst drauf gekommen bin - ist eigentlich ganz einfach!!! Ich war gerade drauf und dran in der .css mit content:'text' die URL in den Link zu schmuggeln. Aber so isses ja viel komfortabler.

      Schankedönchen!

      1. Hi,

        angenommen einen html-Seite wird bei A gehostet. Die verlinkten Dateien (Bilder etc.) beim Provider B.

        dann würde ich mich als allererstes fragen: Warum?? Warum schiebt man nicht die Bilder auch auf den Server von Hoster A rüber und hat dann alles beieinander?

        Zum Bleistift weils ned geht! Ich arbeite z.B. viel mit baseportal. Dort kann ich zwar Textdateien ablegen, aber keine Bilder etc.

        ich kannte baseportal bis eben noch nicht, aber bei solchen Fragen ist es hilfreich, wenn du solche Sonderfälle gleich im Eröffnungspost mit angibst. Denn sonst geht man von einem gewöhnlichen Webhoster aus - mit den unvermeidlichen Rückfragen.

        Und Hoster B ist vielleicht nicht so zuverlässig, wie man es von europäischen Anbietern gewöhnt ist, und fällt öfters mal für kurze Zeit aus.

        Das war ja nur ein plakatives Beispiel - nicht allzu ernst zu nehmen ...

        Ist aber durchaus auch ein Aspekt: Kein Anbieter kann garantieren, dass der Service 100% verfügbar ist. Da passieren mal Pannen, da müssen mal Wartungsarbeiten durchgeführt werden. Verteilt man das Projekt nun auf zwei Services, hat man auch die doppelte Ausfallwahrscheinlichkeit.

        Eventuell könnte dir das base-Element helfen. Allerdings nicht für Hintergrundbilder, die via CSS eingebunden werden.
        Das ich da nicht selbst drauf gekommen bin - ist eigentlich ganz einfach!!!

        Ja, mit den genannten Einschränkungen.

        Ich war gerade drauf und dran in der .css mit content:'text' die URL in den Link zu schmuggeln.

        Ich glaube nicht, dass das funktioniert hätte. Da wäre eher noch ein Ansatz mit Javascript denkbar: Ein Script fällt über document.links her und tauscht den Host-Anteil ggf. gegen einen anderen aus.

        So long,
         Martin

        --
        Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.
        1. @@Der Martin

          Da wäre eher noch ein Ansatz mit Javascript denkbar: Ein Script fällt über document.links her und tauscht den Host-Anteil ggf. gegen einen anderen aus.

          Und bevor das Script das tut fragt der Client 404 nicht existierende Ressourcen an.

          LLAP 🖖

          --
          “You might believe there are benefits for the developer, but first of all, you should put those behind the interest of the user.” —Stefan Tilkov
          Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
          1. Hi,

            Da wäre eher noch ein Ansatz mit Javascript denkbar: Ein Script fällt über document.links her und tauscht den Host-Anteil ggf. gegen einen anderen aus.

            Und bevor das Script das tut fragt der Client 404 nicht existierende Ressourcen an.

            verdammt, ich wusste doch, dass ich irgendeinen Haken übersehen hatte.

            Man könnte natürlich mit document.write() rumtricksen, aber das möchte ich gar nicht weiter vertiefen. Von der per se unnötigen Anhängigkeit von Javascript ganz abgesehen.

            So long,
             Martin

            --
            Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.
  3. Hallo Regina Schlauklug,

    die URL zu allen externen Dateien zentral

    was spricht gegen die Definition einer PHP-Variablen?

    Grüße, Martl

    (Wenn Plan A nicht funktioniert: Keine Panik, das Alphabet hat noch weitere 25 Buchstaben!)

    1. Hallo,

      (Wenn Plan A nicht funktioniert: Keine Panik, das Alphabet hat noch weitere 25 Buchstaben!)

      das habe ich neulich auch an der Wand einer Fußgänger-Unterführung hier in der Innenstadt gelesen. Knapp daneben war ein weiterer, IMO wirklich tiefsinniger Spruch:

      Don't fight for your country.
      Fight for your planet.
      

      So long,
       Martin

      --
      Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.
      1. Hallo Martin,

        das soll eigentlich nur von Brecht ablenken und Hoffung machen. ;-}

        "Ja, mach nur einen Plan, sei nur ein großes Licht und mach dann noch 'nen zweiten Plan, gehn tun sie beide nicht."

        Bertolt Brecht, Dreigroschenoper

        Grüße, Martl

        (Wenn Plan A nicht funktioniert: Keine Panik, das Alphabet hat noch weitere 25 Buchstaben!)

  4. Hat einer ne Idee oder Lösung. Das Internet hat nix diesbezüglich rausgeworfen ...

    Absolut angeben aber ohne scheme://auth also nur path. Beispiel: src="/jquery.min.js". Bin schon paarmal umgezogen, kein Thema. Das ist dann auch kein Thema wenn scheme von http zu https wechseln sollte.

    1. Hallo pl,

      Hat einer ne Idee oder Lösung. Das Internet hat nix diesbezüglich rausgeworfen ...

      Absolut angeben aber ohne scheme://auth also nur path. Beispiel: src="/jquery.min.js". Bin schon paarmal umgezogen, kein Thema. Das ist dann auch kein Thema wenn scheme von http zu https wechseln sollte.

      Ich glaube, du hast nicht aufmerksam genug gelesen.

      Bis demnächst
      Matthias

      --
      Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts. (Albert Einstein)
      1. Hallo pl,

        Hat einer ne Idee oder Lösung. Das Internet hat nix diesbezüglich rausgeworfen ...

        Absolut angeben aber ohne scheme://auth also nur path. Beispiel: src="/jquery.min.js". Bin schon paarmal umgezogen, kein Thema. Das ist dann auch kein Thema wenn scheme von http zu https wechseln sollte.

        Ich glaube, du hast nicht aufmerksam genug gelesen.

        Ahja aber Du!? Warum sehe ich dann keinen Lösungsvorschlag von Dir?

        1. Hallo,

          Ich glaube, du hast nicht aufmerksam genug gelesen.

          Ahja aber Du!?

          ja, ich vermute schon.

          Warum sehe ich dann keinen Lösungsvorschlag von Dir?

          Vielleicht weil schon drei sinnvolle Vorschläge geäußert wurden?

          So long,
           Martin

          --
          Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.
        2. @@pl

          Ich glaube, du hast nicht aufmerksam genug gelesen.

          Ahja aber Du!? Warum sehe ich dann keinen Lösungsvorschlag von Dir?

          Weil von woodfighter und Dem Martin schon welche kamen‽

          Ich glaube, du hast nicht aufmerksam genug gelesen.

          LLAP 🖖

          --
          “You might believe there are benefits for the developer, but first of all, you should put those behind the interest of the user.” —Stefan Tilkov
          Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
          1. Ruhig Kinners, nich gleich hauen!!!

            Das mit <base> war schon ned so schlecht - im Prinzip. Bloss werden jetzt meine Dateiinternen Anker (#) ja auch nach extern verlinkt, wo halt kein Ziel auf sie wartet. Mist!!!

            Watt nu??????

            1. Hallo,

              Ruhig Kinners, nich gleich hauen!!!

              ich bin ganz entspannt, keine Sorge.

              Das mit <base> war schon ned so schlecht - im Prinzip. Bloss werden jetzt meine Dateiinternen Anker (#) ja auch nach extern verlinkt, wo halt kein Ziel auf sie wartet. Mist!!!

              Dumm gelaufen, würde ich sagen. Holzhammermethode: Alle Links und Referenzen, die konstant bleiben sollen (also auch dokumentinterne), als absolute Pfade mit Hostnamen ausschreiben, und nur die externen, die sich mal ändern könnten, relativ lassen. Dann wird base nur für diese wirksam.

              Aber schön ist anders, muss ich zugeben ... Ich fürchte aber, "schön" lässt dein Szenario mit der gewünschten Flexibilität nicht zu.

              So long,
               Martin

              --
              Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.
              1. Dumm gelaufen, würde ich sagen. Holzhammermethode: Alle Links und Referenzen, die konstant bleiben sollen (also auch dokumentinterne), als absolute Pfade mit Hostnamen ausschreiben, und nur die externen, die sich mal ändern könnten, relativ lassen. Dann wird base nur für diese wirksam.

                Geht bloss nicht, weil die .html-Seite einen noch viel kryptischeren Namen hat als die externen Links. Sie liegt unter einem gaaaaaanz langen Namen bei baseportal und die eigentliche .html wird erst während der Laufzeit generiert - und es gibt in dem Dokument mindestens genauso viele interne wie externe Links - von daher hab ich jetzt die Wahl zwischen Pest und Cholera ...

                1. Hallo Regina Schlauklug,

                  und die eigentliche .html wird erst während der Laufzeit generiert

                  Dann hast du ja serverseitige Möglichkeiten.

                  Bis demnächst
                  Matthias

                  --
                  Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts. (Albert Einstein)
                  1. da muss ich noch ein paar Nächte drüber schlafen ...

    2. Hat einer ne Idee oder Lösung. Das Internet hat nix diesbezüglich rausgeworfen ...

      Absolut angeben aber ohne scheme://auth also nur path. Beispiel: src="/jquery.min.js". Bin schon paarmal umgezogen, kein Thema. Das ist dann auch kein Thema wenn scheme von http zu https wechseln sollte.

      Ergänzung: Absolute, auf das Dateisystem bezogene Pfadangaben für Webressourcen (css, img, js) sind Unfug. Zwischen Pfaden im Dateisystem und URL vermittelt der Webserver über DocumentRoot. Schneide den in DocumentRoot stehenden Teil der Pfadangabe ab, dann bleibt der virtuelle Pfad übrig und Letzerer ist das was die Location bestimmt. Das legt also nicht der Provider fest, sondern Du.

      1. Moin,

        Absolut angeben aber ohne scheme://auth also nur path. Beispiel: src="/jquery.min.js". Bin schon paarmal umgezogen, kein Thema. Das ist dann auch kein Thema wenn scheme von http zu https wechseln sollte.

        Ergänzung: Absolute, auf das Dateisystem bezogene Pfadangaben für Webressourcen (css, img, js) sind Unfug.

        ja, deswegen hat das hier wohl auch noch keiner erwähnt. Warum bringst du das Thema auf den Tisch?

        So long,
         Martin

        --
        Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.