Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Seite erst nach Aufbau anzeigen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Seite erst nach Aufbau anzeigen

    Hallo mal wieder,


    hab das Thema ein bisschen gegoogelt, ein bisschen die Forensuche benutzt - warsch. die falschen Begriffe verwendet.

    Was mich generell bei meinen PHP-scripts stört ist der Schrittweise Aufbau wenn viel Austausch zw. Datenbank und Seite stattfindet.

    Jetzt machen das zum Beispiel Forenbulletin Softwares sehr schön, die Seite wird häufig erst angezeigt wenn sie im Hintergrund größtenteils schon komplett geladen hat.

    Ich weiß nicht genau ob das ins PHP Forum gehört, da ich selbst nicht weiß wo man da überhaupt ansetzt.

    Ist das Anwendung von opcode oder mit was hängt das zusammen bzw. wie realisiert man einen solchen Seitenaufbau - der die Seite erst anzeigt wenn sie schon genug Daten geladen hat?

    Danke!

  • #2
    Hi.

    Z.B. indem Du beim body Tag ein onload Geschichte einbaust und z.B. mit AJAX ein DIV o.ä. über der Seite anzeigst mit Ladebalken (Torte usw) und entsprechend ausblendest, wenn die Seite (primär Bilder) geladen wurden...mal so als Idee jetzt ad hoc.

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Du sprichst allerdings von Datenbank-Abfragen als Ursache, das heißt es ist das HTML selbst ist, was sich schrittweise aufbaut und nicht zu ladende Grafiken, richtig?
      Das könntest Du vermeiden indem Du das EVA-Prinzip (Eingabe-Verarbeitung-Ausgabe) einhältst, ansonsten kannst du aber auch als Workaround erstmal mit Output Buffern arbeiten ([man]ob_start[/man], [man]ob_end_flush[/man])
      [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
      [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

      Kommentar


      • #4
        Wenn das ein Thema ist, dann wird deine Seite wohl 20-30 Sekunden brauchen bis sie fertig steht. In diesem Fall ist die Alternative, den Besucher 20-30 Sekunden vor einem leeren Bildschirm sitzen zu lassen mit der Gefahr, dass diese gleich weitersurft weil er denkt, dass die Seite down ist.
        Vielleicht optimierst du besser deine Datenbankzugriffe als im HTML herumzutricksen.
        [PHP]if ($var != 0) {
        $var = 0;
        }[/PHP]

        Kommentar


        • #5
          Nein, das ist nicht der Fall. Kommt natürlich auf die jew. Location an. Localhosted unter 1 Sekunde. Durchschnittlich würde ich sagen unter 5 Sekunden (falls im gleichen Land wie Server - aber das ist nur geschätzt). Es stört mich trotzdem. Gerade wenn man dann doch mal nen hohen Ping durch up/downstream hat sollte die Seite dennoch schön dargestellt werden - dieses Step by Step Prinzip finde ich einfach unsauber anzusehen.

          Mal ein Beispiel:

          Über mysql wird gecheckt ob der jeweilige User Zugriffsrechte auf private Bereiche hat. Diese werden dann als Link-Tabs zusätzlich neben den öffentl. angezeigt. Gerade bei diesen kann es passieren, dass sie 2-3 Sekunden nach den öffentlichen aufpoppen. Natürlich speicher ich auf dem Server ab und checke nicht jedes mal über mysql, letzten Endes aber selbes Resultat. News und ähnlicher Content wird auch über die DB geladen. Auch hier kann das o.g. passieren. Gerne würde ich einfach die Seite aufbauen und sobald sie steht anzeigen lassen.

          Z.B. indem Du beim body Tag ein onload Geschichte einbaust und z.B. mit AJAX ein DIV o.ä. über der Seite anzeigst mit Ladebalken (Torte usw) und entsprechend ausblendest, wenn die Seite (primär Bilder) geladen wurden...mal so als Idee jetzt ad hoc.
          Danke danach werde ich googlen.

          Du sprichst allerdings von Datenbank-Abfragen als Ursache, das heißt es ist das HTML selbst ist, was sich schrittweise aufbaut und nicht zu ladende Grafiken, richtig?
          Exakt, Grafiken meine ich nicht. Verwende ich auch kaum.

          ansonsten kannst du aber auch als Workaround erstmal mit Output Buffern arbeiten (ob_start, ob_end_flush)
          Und auch danach werde ich mich umschauen.

          Vielen Dank.

          Kommentar


          • #6
            Das Verhalten ist Browsersache.. er bezieht seine Daten ja auch nur häppchenweise und die Entwickler der Browser haben sich die gleiche Frage natürlich auch gestellt (weisse Seite zeigen oder pö a pö Aufbau). Das Output Buffering ist nur Serverseitig eine Abhilfe, denn wenn du umfangreiche Inhalte auslieferst, zu große Bilder, "ungeschickten" HTML Markup o.ä und der Client und/oder Server eine schwache Leitung besitzen, wird sich der Effekt trotzdem einstellen..

            Der Weg über Ajax sollte prinzipiell vorgezogen werden, da in diesem Szenario eine Seite nur einmal komplett geladen werden muss.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Kannst ja mal mit nem Benchmark testen, wie lange deine Seite zum Rendern braucht. Wenn das > 1 sec ist würd ich mich mal nach nem neuen Host umschauen.

              Wenn es jetzt nur an der Übertragung liegt könntest du das mit AJAX lösen.

              Kommentar


              • #8
                Das Verhalten ist Browsersache..
                Trifft das Problem auf alle Browser zu? Oder ist das nur wieder ne IE gg. Rest der Welt Geschichte? Denn IE exkludier ich von vornherein .


                Kannst ja mal mit nem Benchmark testen, wie lange deine Seite zum Rendern braucht. Wenn das > 1 sec ist würd ich mich mal nach nem neuen Host umschauen.
                Da ich es selbst nur erlebt habe wenn ich kaum freies Band hab, denke ich es liegt eher am user selbst - werde es aber aufjeden Fall mal machen - danke!

                Kommentar


                • #9
                  Zitat von marcial Beitrag anzeigen
                  Trifft das Problem auf alle Browser zu? Oder ist das nur wieder ne IE gg. Rest der Welt Geschichte? Denn IE exkludier ich von vornherein .
                  Mir ist lange kein Browser mehr untergekommen, der auf den Empfang der kompletten Seite gewartet hat... die alte Mozilla-engine machte das so, wenn ich mich recht erinnere (Netscape Navigator von anno pief)
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    Ich denke mal dann kann ich das vernachlässigen, danke Dir.

                    Kommentar


                    • #11
                      Hier im Board ist das eine eigenwillige Kombi aus Tabellenlayout und Javascript. Tabellen werden erst angezeigt, wenn die Inhalte vollständig geladen sind.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        PHP-Code:
                        echo 'Bitte installieren Sie einen dem Webdesigner genehmen Browser.';
                         echo 
                        'Mit Ihrem doofen IE dürfen Sie hier nicht weiter.'
                        AnyBrowser.com - Your Source for Browser Compatibility Verification
                        [PHP]if ($var != 0) {
                        $var = 0;
                        }[/PHP]

                        Kommentar


                        • #13
                          Zitat von marcial Beitrag anzeigen
                          Nein, das ist nicht der Fall. Kommt natürlich auf die jew. Location an. Localhosted unter 1 Sekunde. Durchschnittlich würde ich sagen unter 5 Sekunden (falls im gleichen Land wie Server - aber das ist nur geschätzt).
                          Fünf Sekunden sind im Web schon sehr viel Zeit.

                          Dann solltest du tunlichst nicht den Seitenaufbau auf dem Client noch weiter verzögern - alle gängigen Empfehlungen gehen ins Gegenteil: Lass den Nutzer schon mal sehen, was schon zu sehen ist - das hält ihn wenigstens bei der Stange und davon ab, die Seite wieder zu verlassen, weil sich „nichts tut“.

                          Was du hingegen tun solltest, ist analysieren, warum der Seitenaufbau (serverseitig) derart lange dauert - und an der Stelle optimieren.
                          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                          Kommentar


                          • #14
                            Zitat von Wolla Beitrag anzeigen
                            PHP-Code:
                            echo 'Bitte installieren Sie einen dem Webdesigner genehmen Browser.';
                             echo 
                            'Mit Ihrem doofen IE dürfen Sie hier nicht weiter.'
                            AnyBrowser.com - Your Source for Browser Compatibility Verification
                            Kann dir gar nicht beschreiben wie wenig mich das für ein relativ privates Projekt interessiert, soleid es mir tut.

                            Zitat von ChrisB
                            Fünf Sekunden sind im Web schon sehr viel Zeit.

                            Dann solltest du tunlichst nicht den Seitenaufbau auf dem Client noch weiter verzögern - alle gängigen Empfehlungen gehen ins Gegenteil: Lass den Nutzer schon mal sehen, was schon zu sehen ist - das hält ihn wenigstens bei der Stange und davon ab, die Seite wieder zu verlassen, weil sich „nichts tut“.

                            Was du hingegen tun solltest, ist analysieren, warum der Seitenaufbau (serverseitig) derart lange dauert - und an der Stelle optimieren.
                            Da hast du auch wieder recht. Ich bin aber bei der angegebenen Zeit auch nur von mir selbst nach Amiland ausgegangen (was ich so für Erfahrungen gemacht hab). Hinzu kommt "nur" DSL2000 + WLAN im Keller + einiges an Traffic das durch meine Leitung nebenher geht. Ich denke mal alles in allem sind 5 Sekunden zu viel geschätzt wenn man von einer freien Leitung ausgeht. Aber ich werde es mal analysieren

                            Kommentar


                            • #15
                              Ist doch total Borschscht. Faktisch hast Du noch keinen Grund genannt, warum alles auf einmal erscheinen soll.
                              [COLOR="#F5F5FF"]--[/COLOR]
                              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                              [COLOR="#F5F5FF"]
                              --[/COLOR]

                              Kommentar

                              Lädt...
                              X