HtmlNoob: Wie speichern grosse Internetseiten ihre Bilder

Hallo zusammen

Auch nach ausgiebigem googeln habe ich die passende Antwort nicht gefunden...

Habe mir überlegt eine Website zu erstellen mit einer Diashow...
Möchte die Diashow später auch durch ein Android-App aufs Handy bekommen...

Habe mir als ersten Schritt überlegt, wie ich die Bilder am besten Abspeichere und habe mich
deswegen online auf die Suche gemacht, wie das grössere Seiten wie F`book und co handhaben,
bin aber nicht auf sinnvolle antworten gestossen...
Hierbei möchte ich anfügen, dass ich die Bilder selber verwalten möchte, das heisst picasa oder ähnliches passt nicht...

Spontan fallen mir zwei Möglichkeiten ein...

PHP-Script mit mysql-Datenbank
Ordner mit den Bilder und mit Link im Html aufrufen

Nun bin ich auf eure Meinungen zu meinem Problem gespannt, sicher habt ihr noch bessere Ideen
hierzu oder andere Tipps

Vielen Dank schon im Vorauss für eure Anmerkungen und Tipps

MfG HtmlNoob

  1. Tach!

    Habe mir als ersten Schritt überlegt, wie ich die Bilder am besten Abspeichere und habe mich deswegen online auf die Suche gemacht, wie das grössere Seiten wie F`book und co handhaben,

    Warum schaust du da gleich auf die Großen? Willst du einen Dienst in ähnlicher Größenordnung aufziehen? Willst du eine oder mehrere Server-Farmen betreiben?

    PHP-Script mit mysql-Datenbank
    Ordner mit den Bilder und mit Link im Html aufrufen

    Ein Webserver ist darauf ausgelegt, Dateien aus seinem Dateisystem auszuliefern, und das kann er sehr effizient. Wenn du keine Einschränkungen brauchst, wäre das die beste Variante. Ein Zugriffsmechanismus über Script und Datenbank braucht länger. Ob das aber aufgrund von geringer Besucherzahl nicht weiter ins Gewicht fällt, musst du selbst einschätzen können, ebenso ob du weitere Funktionalität neben reiner Auslieferung benötigst.

    dedlfix.

    1. Guten Tag

      In der Grössenordnung geht es um höchstens einige hundert bis tausend Bilder, also nicht im grossen Style... Habe mir einfach gedacht, die grossen Firmen haben da ihre ausgetüfftelten Lösungen;-)

      Das Ziel ist es, sich die Bilder, welche nach Kategorien etc gegliedert werden anzuschauen, gezielt Bilder zu Suchen (Ev. Google-Suche wenn das möglich ist die Parameter (Bild-ID) eines Suchergbnisses einer allfälligen Flash-Diashow zu übergeben, damit dieses dann automatisch dort erscheint...)
      Weiter soll der User per Downloadbutton (Javascribt) das Bild Herunterladen können, braucht also auch dort Zugriff zum Bild...

      Dann sehe ich das richtig, das die beste Lösung wäre, einen Ordner im Webseitenverzeichnis zu erstellen und die Bilder dort zu hinterlgen?

      Die Googelsuche müsste man doch irgedwie so einstellen können, das sie die Bilder bzw. die Bildernamen durchsucht?

      Gruss HtmlNoob

      1. Weiter soll der User per Downloadbutton (Javascribt) das Bild Herunterladen können, braucht also auch dort Zugriff zum Bild...

        Der User braucht auch Zugriff (e.g. das Bild muss im öffentlichn Ordner abgelegt sein), wenn du es in die Diashow integrierst. Der Zugriff ist der selbe, daher ist "auch" unpassend.

        Dann sehe ich das richtig, das die beste Lösung wäre, einen Ordner im Webseitenverzeichnis zu erstellen und die Bilder dort zu hinterlgen?

        Möglich. Auch möglich:

        • Bild im nicht-öffentlichen Bereich speichern und über ein php-Script im öffentlichen Bereich aufrufen (entsprechender Header + file_get_contents()).
          <img src="image.php?pic=1ao1kdh3" alt=""/>
          Dies geht auch in Kombination mit einer passenden modrewrite-Regel, damit die url nach wie vor wie der Pfad zu einem Bild aussieht.
          <img src="1ao1kdh3.jpg" alt="" />
        # redirect images to /pic/route.php  
        RewriteCond %{REQUEST_FILENAME} !-f  
        RewriteRule (.*)\.(gif|jpg|png|ico)$ /pic/route.php [NC,L]
        

        Vorteile:

        • Dein öffentliches Verzeichnis bleibt unberührt
        • Du kannst (auch komplexe) Zugriffsregeln einfach implementieren (z.B. Auslieferung nur wenn eingeloggt, etc)
        • Du kannst das routing in der image.php erweitern durch zum Beispiel Auswertung der Domain, Subdomain. Das ist für mich der größte Vorteil, weil mein CMS multi-(sub)domain fähig ist.
          Nachteile:
        • Geschwindigkeitseinbußen möglich.

        Cheers,
        Baba

        1. Tach!

          • Bild im nicht-öffentlichen Bereich speichern und über ein php-Script im öffentlichen Bereich aufrufen (entsprechender Header + file_get_contents()).

          Nö, readfile(). Der Dateiinhalt wird nicht in voller Gänze im Speicher benötigt, sondern muss nur (stückchenweise) von der Datei zur Ausgabe durchgereicht werden.

          dedlfix.

          1. Sorry, natürlich.

            Cheers,
            Baba

  2. Habe mir als ersten Schritt überlegt, wie ich die Bilder am besten Abspeichere und habe mich
    deswegen online auf die Suche gemacht, wie das grössere Seiten wie F`book und co handhaben,
    bin aber nicht auf sinnvolle antworten gestossen...

    Falls Du abertausende Bilder hast:

    Das Bild wird mit Daten (z.B. Deiner Beschreibung) hochgeladen. Vom Origialbild wird ein Hash (.z.B.) mit md5 erzeugt, es wird z.B. im Ordner "/pics/original/" mit dem Name $HASH gespeichert, in weiteren Ordnern als "/pics/$SIZE_XXXX/$HASH" - Für Vorschauen, verschiedene Größen und so weiter. Das bis hierher nur, wenn es das Bild noch nicht gibt. In einer Datenbank landen auf jeden Fall der Hash, der originale Dateiname, die dazu übermittelten Daten, wem das Bild wohl gehört und (in einer Extra-Tabelle) ein "Linkzähler".  Das alles soll verhindern, dass gleiche Bilder mehrfach gespeichert werden. Gelöscht wird, wenn der "Linkzähler" auf Null steht.  Gibts das Bild schon werden nur der Hash, die Daten und der weitere Eigentümer gespeichert und der Linkzähler hochgesetzt.

    So kommt es, dass Bilder auf Blogspot.com URLs haben wie:

    http://4.bp.blogspot.com/-EIUwocL3nKI/UYztediTkGI/AAAAAAAAGvM/M_qQHqUND7g/s1600/Bildschirmfoto+vom+2013-05-10+14:51:15.png

    In der URL finden sich der Hash (wohl nicht MD5...), Angaben zum Eigentümer, die gewünschte Größe und der Original-Dateiname. Weil Google abermillionen Bilder (wenn nicht Milliarden) wohl sogar Angaben zum Datenbankserver der die "Metadaten" hat. "4.bp.blogspot.com" ist eher nur der ausliefernde Webserver.

    Was davon Du jetzt nachbaust ist Dir überlassen.

    Jörg Reinholz