Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe von Websites

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

  • Ausgabe von Websites

    Hallo Zusammen,

    ich habe mal eine Frage und versuche sie verständlich zu erklären.

    Es gibt ja zum einen die Möglichkeit eine Website erst auszugeben nachdem sie komplett durchgeladen wurde (also: Website läd durch, wenn alles fertig ist wird sie ausgegeben und ist gleich komplett zu sehn)

    Dann gibt es noch die Möglichkeit das die Seite nach und nach aufgebaut wird, gut nachvollziehn kann man das z.B. im Shop von Alternate.. Die Seite wird aufgebaut und fertige Teile werden sofort ausgegeben.. In langen Kategorieren sind die ersten Produkte z.B. schon da und die anderen werden nach und nach einfach hinzugefügt bis die komplette Seite aufgebaut ist.

    Meine Frage ist nun wie ich es hinbekomm das nicht erst alles durchgeladen und aufgebaut wird, sondern was ich machen muss damit die Produkte nach und nach hinzukommen bis alles da ist?

    Genutzt wird php5 und ein Apache!?
    Oder vielleicht mittels Ajax?

    Danke für die Hilfe und Grüße!


  • #2
    naja du hast eben die möglichkeiten einen HTML String erst zu generieren und dann auszugeben oder sofort den inhalt ausgeben. etwa so:

    produkte generieren und zum schluss ausgeben (hier wird der html code zuerst generiert und wenn alle Produkte aus der DB ausgelesen wurden, wird der htmlcode ausgegeben)
    PHP-Code:
    $sql mysql_query("SELECT * FROM Products");
    $htmlCode '<table>';
    while(
    $row mysql_fetch_object($sql)){
    $htmlCode .= '<tr>';
    $htmlCode .= '<td>'.$row->product_name.'</td>';
    $htmlCode .= '<td>'.$row->product_price.'</td>';
    $htmlCode .= '</tr>';
    }
    $htmlCode .= '</table>';
    echo 
    $htmlCode
    produkte sofort ausgeben (hier wird ein neuer html code ausgegeben bei jedem produkt)
    PHP-Code:
    $sql mysql_query("SELECT * FROM Products");
    echo 
    '<table>';
    while(
    $row mysql_fetch_object($sql)){
    echo 
    '<tr>';
    echo 
    '<td>'.$row->product_name.'</td>';
    echo 
    '<td>'.$row->product_price.'</td>';
    echo 
    '</tr>';
    }
    echo 
    '</table>'
    und dann gibts sowas wie [MAN]ob_start[/MAN] usw.

    MFG
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/witalimik

    Kommentar


    • #3
      Zitat von costh Beitrag anzeigen
      Es gibt ja zum einen die Möglichkeit eine Website erst auszugeben nachdem sie komplett durchgeladen wurde (also: Website läd durch, wenn alles fertig ist wird sie ausgegeben und ist gleich komplett zu sehn)
      Clientseitig hast du darauf keinen Einfluss! Der Browser entscheidet, wann er die visuelle Ausgabe startet.

      Zitat von costh Beitrag anzeigen
      Dann gibt es noch die Möglichkeit das die Seite nach und nach aufgebaut wird, gut nachvollziehn kann man das z.B. im Shop von Alternate.. Die Seite wird aufgebaut und fertige Teile werden sofort ausgegeben.. In langen Kategorieren sind die ersten Produkte z.B. schon da und die anderen werden nach und nach einfach hinzugefügt bis die komplette Seite aufgebaut ist.

      Meine Frage ist nun wie ich es hinbekomm das nicht erst alles durchgeladen und aufgebaut wird, sondern was ich machen muss damit die Produkte nach und nach hinzukommen bis alles da ist?

      Ist das mit mit Ajax zu realisieren? (Leider noch nie damit gearbeitet)

      Oder ist diese Funktion woanders zu suchen? Genutzt wird php5 und ein Apache!?

      Danke für die Hilfe und Grüße!
      Im Prinzip ja. Der "Trick" ist, die Seite leer auszuliefern und alle Inhalte per AJAX (asynchron) dynamisch nachzuladen.
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        1. AJAX, aber auch das ist nicht immer sehr schön.
        Oft ist es schöner alles gemeinsam auszuliefern, anstatt 5 leere Boxen zu haben, die nach und nach ausgeliefert werden

        2. Es hängt auch stark vom Design ab glaub ich.
        Hab einen interessanten Artikel dazu auf vb.org gelesen.
        Internet Explorer 7

        When Internet Explorer renders a <table>, it downloads all the objects within the table before displaying it. This is required so that Internet Explorer can render the table with the correct width for each column.

        PROS
        The entire table is displayed as designed.

        CONS
        Large tables or tables with many objects will cause a delay in loading the page.

        Mozilla Firefox 2

        On the other hand, Firefox renders all objects progressively regardless if it's in a table. That is to say - each object is displayed as soon as it is downloaded.

        PROS
        The reader has something to read as they wait for each object to download.

        CONS
        Each object is displayed without knowing it's position. When the table is completely loaded, all objects are moved to their respective positions.

        Still confused? Below are 2 animated images that visually displays progressive rendering between the 2 major browsers: Internet Explorer and Firefox.
        Quelle: How Design Affects Performance : Progressive Rendering - vBulletin.org Forum kA ob ihr drauf Zugriff habt

        Kommentar


        • #5
          Ajax ist wohl der falsche ansatzpunkt..
          Gibt es eine einstellung im apache oder evtl. doch code in php mittels dem ich zwischen den modis wechseln kann... jemand ne idee?

          Kommentar


          • #6
            IMHO gibts da keine Einstellung
            ohne AJAX: @see #4 kommt es darauf an, wie die Seite aufgebaut ist und wie der Browser damit umgeht.

            Kommentar


            • #7
              Wenn das System nicht an mehreren Stellen von sich aus den output ausgibt (echo/print) sondern ein View z.b. in Form einer Template-Engine zum einsatz kommt die erst wenn ALLE Daten da sind das Template rendert, ist es schlicht und einfach nicht möglich schon vorher was auszugeben.
              Einfach eine Einstellungen ändern ist es dann nicht, sondern die gesammte Applikation umschreiben.
              Falls dein System überall einzeln mit echo arbeitet und den code nicht in einem stück ausgibt kannst du dich im manual mal mit ob_flush(), flush() und den php-einstellungen zur Ausgabe:
              PHP: Runtime Configuration - Manual
              robo47.net - Blog, Codeschnipsel und mehr
              | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

              Kommentar


              • #8
                Die Haupt-Ladezeiten stellen imho doch sowieso eingebundene Ressourcen wie Bilder oder Stylsheets dar. Ausserdem: Wo bitte liegt der Vorteil, wenn eine Seite erst nach und nach dargestellt wird. Ich als Nutzer habe jedenfalls Interesse daran, dass die Seite möglichst schnell "kommt".
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar

                Lädt...
                X